【发布时间】:2017-10-30 20:46:17
【问题描述】:
我有这个可以使用下面提到的 ajax 调用的 webAPI。
我正在尝试使用 c#HttpClient 实现相同的结果(获取 data.URLs)。
它是一个获取我数据的 POST 请求。
无论我创建什么都会遇到 404 错误。 下面是代码:
$.ajax({
type: "POST",
crossOrigin: true,
headers: { "Authorization-Token": "someToken" },
url: https://someURl?Param1=" + Val1 + "&Param2=" + Val2 + "&Param3=" + Val3,
contentType: false,
processData: false,
data: data,
success: function (data) {
document.getElementById("message").innerHTML = data.Message;
$("#urlelement").empty();
for (var i = 0; i < data.URLs.length; i++) {
$("#urlelement").append('<span>' + data.URLs[i] + '</span>');
$("#urlelement").append('<br />');
}
},
error: function (data, errorThrown, status) {
alert(data.responseText);
}
});
});
到目前为止我的代码: 我知道我没有返回任何值,而只是想在响应中有内容时到达一个点。不知道字符串内容是否应该这样创建也不适用于这种场景
static HttpClient client = new HttpClient();
static string token = "some values"
static void Main()
{
RunAsync().Wait();
}
static async Task RunAsync()
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
client.DefaultRequestHeaders.Add("Authorization-Token", token);
string Param1 = "val1";
string Param2 = "val2";
int Param3 = val3;
var requestString = "https://someUrl?";
var dataString = String.Format("Param1={0}Param2={1}Param3={2}", val1, val2, val3);
var url = await getDataAsync(requestString, dataString);
}
static async Task<Uri> getDataAsync(string path, string data)
{
StringContent queryString = new StringContent(data);
HttpResponseMessage response = await client.PostAsync(path,queryString);
response.EnsureSuccessStatusCode();
return response.Headers.Location;
}
【问题讨论】:
标签: c# dotnet-httpclient