繁体   English   中英

如何在 URL 中 POST 查询字符串参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM