gpt4 book ai didi

c# - 如何在 C# 中使用 WebClient 将参数发布到 Azure 服务 URL

转载 作者:行者123 更新时间:2023-12-03 01:52:11 33 4
gpt4 key购买 nike

我已经测试/谷歌搜索了几个小时,了解如何将 C# 中的参数 POST 到 Azure 服务,而不会出现错误 405。

使用 Chilkat lib 的 C++ 代码可以正常工作

CkHttp http;    
CkHttpRequest req;
http.put_SessionLogFilename("c:/temp/httpLog.txt");
req.put_HttpVerb("POST");
req.put_Path("/api/test?value=1234");

CkHttpResponse *resp = http.SynchronousRequest("http://testservice.cloudapp.net",80,false,req);
if (resp == 0 )
afxDump << http.lastErrorText() << "\r\n";

afxDump << resp->bodyStr() << "\r\n";
delete resp;

但是如果它使用此 C# 代码,我会收到错误 405。

string uri = "http://testservice.cloudapp.net/api/test";
string parameter = "value=1234";

using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string HtmlResult = wc.UploadString(uri, parameter);
}

有什么提示我做错了吗?

最佳答案

最好使用 HttpClient 而不是 WebClient 。通过查看 C++ 代码的作用,在 C# 中使用 HttpClient

应该是这样的
    public void Test() {
using (HttpClient client = new HttpClient()) {

client.BaseAddress = new Uri("http://testservice.cloudapp.net");
var response = client.PostAsync("api/test?value=1234", new StringContent(string.Empty)).Result;
var statusCode = response.StatusCode;
var errorText = response.ReasonPhrase;

// response.EnsureSuccessStatusCode(); will throw an exception if status code does not indicate success

var responseContentAsString = response.Content.ReadAsStringAsync().Result;
var responseContentAsBYtes = response.Content.ReadAsByteArrayAsync().Result;
}

}

这是上面代码的异步版本

public async Task TestAsync() {
using (HttpClient client = new HttpClient()) {

client.BaseAddress = new Uri("http://testservice.cloudapp.net");
var response = await client.PostAsync("api/test?value=1234", new StringContent(string.Empty));
var statusCode = response.StatusCode;
var errorText = response.ReasonPhrase;

// response.EnsureSuccessStatusCode(); will throw an exception if status code does not indicate success

var responseContentAsString = await response.Content.ReadAsStringAsync();
var responseContentAsBYtes = await response.Content.ReadAsByteArrayAsync();
}

}

关于c# - 如何在 C# 中使用 WebClient 将参数发布到 Azure 服务 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34704075/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com