使用 PostAsync 发送 httpcontent 会出现内部服务器错误
Send httpcontent with PostAsync gives Internal Server Error
要在 Post异步方法中将数据作为查询字符串发送,我使用以下方法。但我收到内部服务器错误。
HttpResponseMessage response;
string stringContent = "{ 'request_key': 'ABCD1234', 'request_code': 'CODE', 'request_type':'ID_type' }";
using(var client = new HttpClient()) {
client.BaseAddress = new Uri(SubscriptionUtility.GetConfiguration("BaseURI"));
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(SubscriptionUtility.GetConfiguration("ContentType")));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", SubscriptionUtility.GetConfiguration("BasicAuthentication"));
response = await client.PostAsync(SubscriptionUtility.GetConfiguration("SubscriptionAPI"), stringContent, new JsonMediaTypeFormatter());
if(response.IsSuccessStatusCode) {
var dataObjects = JsonConvert.DeserializeObject<List<TestClass>>(response.Content.ReadAsStringAsync().Result);
//foreach(var d in dataObjects) {
//}
}
}
但是当我通过 fiddler 发送请求时,它工作正常。这是我的提琴手请求
用户代理:Fiddler
内容类型:application/json;字符集=utf-8
主持人:testapi.com
内容长度:93
授权:基本 12fbe6e1f63d832aa33232323
Post数据:
{
"request_key":"ABCD1234",
"request_code":"CODE",
"request_type":"ID_type"
}
我使用以下方法实现了所需的功能
Post Request
using(var client = new HttpClient()) {
client.BaseAddress = new Uri(SubscriptionUtility.GetConfiguration("BaseURI"));
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(SubscriptionUtility.GetConfiguration("ContentType")));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", SubscriptionUtility.GetConfiguration("BasicAuthentication"));
var values = new Dictionary<string, string>
{
{ "request_key", "ABCD1234" },
{ "request_code", "CODE" },
{ "request_type", "ID_type" }
};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync(SubscriptionUtility.GetConfiguration("SubscriptionAPI"), content);
var responseString = await response.Content.ReadAsStringAsync();
要在 Post异步方法中将数据作为查询字符串发送,我使用以下方法。但我收到内部服务器错误。
HttpResponseMessage response;
string stringContent = "{ 'request_key': 'ABCD1234', 'request_code': 'CODE', 'request_type':'ID_type' }";
using(var client = new HttpClient()) {
client.BaseAddress = new Uri(SubscriptionUtility.GetConfiguration("BaseURI"));
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(SubscriptionUtility.GetConfiguration("ContentType")));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", SubscriptionUtility.GetConfiguration("BasicAuthentication"));
response = await client.PostAsync(SubscriptionUtility.GetConfiguration("SubscriptionAPI"), stringContent, new JsonMediaTypeFormatter());
if(response.IsSuccessStatusCode) {
var dataObjects = JsonConvert.DeserializeObject<List<TestClass>>(response.Content.ReadAsStringAsync().Result);
//foreach(var d in dataObjects) {
//}
}
}
但是当我通过 fiddler 发送请求时,它工作正常。这是我的提琴手请求
用户代理:Fiddler
内容类型:application/json;字符集=utf-8
主持人:testapi.com
内容长度:93
授权:基本 12fbe6e1f63d832aa33232323
Post数据: { "request_key":"ABCD1234", "request_code":"CODE", "request_type":"ID_type" }
我使用以下方法实现了所需的功能 Post Request
using(var client = new HttpClient()) {
client.BaseAddress = new Uri(SubscriptionUtility.GetConfiguration("BaseURI"));
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(SubscriptionUtility.GetConfiguration("ContentType")));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", SubscriptionUtility.GetConfiguration("BasicAuthentication"));
var values = new Dictionary<string, string>
{
{ "request_key", "ABCD1234" },
{ "request_code", "CODE" },
{ "request_type", "ID_type" }
};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync(SubscriptionUtility.GetConfiguration("SubscriptionAPI"), content);
var responseString = await response.Content.ReadAsStringAsync();