如何将已URL编码的字符串用于PostAsync请求?
解决方案
你的请求体是URL编码的表单格式,需要把字符串包装成StringContent(HttpContent的子类),并设置正确的请求头,才能让服务器正确解析内容。
具体操作如下:
- 用
StringContent包裹请求体字符串,指定UTF-8编码,同时将Content-Type设为application/x-www-form-urlencoded(这是URL编码表单的标准媒体类型) - 把这个
StringContent实例作为PostAsync的第二个参数传入即可
完整代码示例
string request_body = "jazoest=25476&fb_dtsg=NAcPrG47So0hD5mhwwRfxJpl2Ey0_MYGJ56i7hag-P_t9oHc4SRnzmg%3A27%3A1666973204&create_test_app=1&parent_app_id=851841869280804&basic_name=asdsa%20-%20Test2&__usid=6-Trkzn9iowut6h%3APrkzqwf7zns4o%3A0-Arkzq8is0tywz-RV%3D6%3AF%3D&__user=100047878717&__a=1&__dyn=7xeUmxa3-Q8zo9E4a2i5U4e1Fx-ewSxu68uxa2e1Ezobo9E984e0G8G6Ehw9-15wfO1YCwjE7R2o4U1eE4aUS1vw4iwBgaohzE2DwiUmwnEfo4a5Ey19zUuw9O0RE5a1qxa1XwnE2Lxiaw4qxa7o-3qazo8U3ywbS1bqo2Yw&__csr=&__req=1m&__hs=19303.BP%3Adevsite_pkg.2.0.0.0.0&dpr=1&__ccg=EXCELLENT&__rev=1006332&__s=v4ezlf%3%3Awrukmu&__hsi=7163345567570&__comet_req=0&lsd=x_LyfPf8wTksRdG&__aaid=96891893825&ajax_password=302o&confirmed=1"; // 转换为符合要求的HttpContent类型 var content = new StringContent(request_body, System.Text.Encoding.UTF8, "application/x-www-form-urlencoded"); // 发送请求 var result = Client.PostAsync(baseAddress, content).Result;
补充说明
- 指定
application/x-www-form-urlencoded是为了告诉服务器当前请求体是URL编码的表单格式,确保参数能被正确解析 - 推荐用
await替代.Result,避免同步阻塞线程,优化后代码:
var result = await Client.PostAsync(baseAddress, content);
内容的提问来源于stack exchange,提问作者SrMilton
相关产品推荐
相关产品推荐

