客户端请求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 POST</title>
<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>
<!-- 页面内容为空,所有操作都通过JavaScript完成 -->
<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>
<!-- <input value="Submit" type="submit" id="submit"> -->
</form>
</body>
</html>