客户端请求url提交post数据的方式很多,
例如HttpWebRequest,HttpClient, 或者第三方的RestSharp以及Flurl 等.
使用也比较简单方便,资料一搜一大堆,不重点写了.
这里主要记录一种使用客户端登录,并且点击触发单点登录到浏览器页面跳转的一种方式.
客户端程序可以轻松启动电脑上的默认浏览器程序,也可以轻松使用浏览器Get请求一个URL地址,但是get请求只能通过QueryString传递可见参数(不论是否对字符进行加密,QueryString是可见的)
而不能直接操作到第三方浏览器行为post数据提交,只能间接通过html+js操作.
很多人用到的方法,是对客户端内嵌一个浏览器,然后进行编程控制.通常的嵌入有 WebBrowser、WebKitBrowser、CefSharp等.
此类方式的具体步骤可以参考如下链接:
https://blog.csdn.net/u011235865/article/details/106262780/
嵌入浏览器的问题很明显,客户端体积增大比较多.
在非必要嵌入的时候, 可以使用隐藏表单的方式,生成html进行跳转.
把生成的html保存为一个Html临时文件.
主要是前端代码,把url123456替换为实际url即可,其它参数自行修改.
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Redirect with POSTtitle>
- <script>
- // 创建一个隐藏的表单字段
- function createHiddenField(name, value) {
- var field = document.createElement('input');
- field.type = 'hidden';
- field.name = name;
- field.value = value;
- return field;
- }
- // 页面加载后立即执行的代码
- window.onload = function () {
- let form = document.getElementById('form');
- setTimeout(function () {
- form.submit();
- },3)
- }
- script>
- head>
- <body>
-
- <form action="url123456" method="post" id="form" style="display: none;">
- <label for="noticeId">noticeId:label>
- <input type="text" id="noticeId" name="noticeId" value="noticeId123456"><br><br>
-
- <label for="prequaRecordId">prequaRecordId:label>
- <input type="text" id="prequaRecordId" name="prequaRecordId" value="prequaRecordId123456"><br><br>
-
- <label for="projectId">projectId:label>
- <input type="text" id="projectId" name="projectId" value="projectId123456"><br><br>
-
- <label for="packageId">packageId:label>
- <input type="text" id="packageId" name="packageId" value="packageId123456"><br><br>
-
- <label for="subjectToken">subjectToken:label>
- <input type="text" id="subjectToken" name="subjectToken"
- value="subjectToken123456"><br><br>
-
- form>
- body>
- html>