[英]how to POST query string parameters in URL
下面的 C# 代碼(他們說這段代碼有效)產生 HTTP 請求,該請求在 Body 中傳遞參數。 我正在使用的 Web 服務器沒有看到這些參數 - 但是當 POST 請求包含 URL 中的參數時它可以工作,如下所示:
http://my.zadarma.com/auth/?p=%2Fconnect%2Fsms%2F
下面的 C# 代碼創建了以下請求,將參數放入正文中:
C#:
POST http://my.zadarma.com/auth/ HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: my.zadarma.com
Content-Length: 21
Expect: 100-continue
Connection: Keep-Alive
p=%2Fconnect%2Fsms%2F
Postman創建以下請求 -將參數放入 URL (我的服務器更喜歡這個):
POST http://my.zadarma.com/auth/?p=%2Fconnect%2Fsms%2F HTTP/1.1
User-Agent: PostmanRuntime/7.29.2
Accept: */*
Postman-Token: d6b3df55-d42f-45e8-82b8-a3fd11b02e35
Host: my.zadarma.com
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 0
如何更改以下代碼(使用 FormUrlEncodedContent 或類似代碼)以將查詢字符串參數連接到 POST 請求中的 URL? (就像 Postman 一樣):
public static async Task<HttpStatusCode> UpdateProductAsync()
{
var url = "http://my.zadarma.com/auth/";
var client = new System.Net.Http.HttpClient();
var data = new Dictionary<string, string>
{
{"p", "/connect/sms/"}
};
var res = await client.PostAsync(url, new FormUrlEncodedContent(data));
var content = await res.Content.ReadAsStringAsync();
Console.WriteLine(content);
var responseString = await res.Content.ReadAsStringAsync();
return res.StatusCode;
}
我可以連接 URL 和 params - 它會起作用,但我盡量避免連接。 更新:以下作品。 但是有沒有更一致的方式來處理參數?
public static async Task<HttpStatusCode> UpdateProductAsync(NetworkParameters networkParameters)
{
var url = "http://127.0.0.1:5001/api/v0/files/stat";
var client = new System.Net.Http.HttpClient();
string queryStringKey = HttpUtility.UrlEncode("arg", Encoding.UTF8);
string queryStringValue = HttpUtility.UrlEncode("/KeySet", Encoding.UTF8);
var res = await client.PostAsync(url + "?" + queryStringKey + "=" + queryStringValue, null);
var content = await res.Content.ReadAsStringAsync();
var responseString = await res.Content.ReadAsStringAsync();
return res.StatusCode;
}
您可以使用Microsoft.AspNetCore.WebUtilities.dll中的查詢助手 class
https://learn.microsoft.com/en-us/do.net/api/microsoft.as.netcore.webutilities.queryhelpers.addquerystring?view=as.netcore-7.0
var newUrl = QueryHelpers.AddQueryString(url, data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.