请求 Body 参数错误请求 API HttpClient
Request Body Parameters Bad Request API HttpClient
我得到 "Bad Request":"card_number should contain numbers only",正在尝试消耗一个 API。
我究竟做错了什么?有人可以帮忙吗?
API 参数必须是:
Header 参数
- Content-type = "application/json; charset=utf-8"
- 授权="Bearer AuthString"
- seller_id = "string "
RequestBody
- card_number = "string"
- customer_id = "string"
[POST]
"curl -X POST \nhttps://api-sandbox.getnet.com.br/v1/tokens/card \n-H 'authorization: Bearer ca22a2ge-1914-4b0c-a0fb-d3ce0fde7346' \n-H 'content-type: application/json; charset=utf-8' \n-d '{\n \"card_number\": \"4012001037141112\"\n}'\n"
public async Task<IActionResult> AuthGetToken()
{
using (var httpClient = new HttpClient())
{
parameters = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("card_number", "4012001037141112"), //(APi's card number given for tests purpose)
new KeyValuePair<string, string>("customer_id", "custumer123")
};
requestMessage = new HttpRequestMessage()
{
Method = new HttpMethod("POST"),
RequestUri = new Uri("https://api-sandbox.getnet.com.br/v1/tokens/card"),
Content = new FormUrlEncodedContent(parameters)
};
requestMessage.Headers.Clear();
requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
requestMessage.Headers.Add("Authorization", "Bearer ca22a2ge-1914-4b0c-a0fb-d3ce0fde7346");
requestMessage.Headers.Add("seller_id", "61c53d30-0d7f-3cf0-7662-c61714942d46");
response = await httpClient.SendAsync(requestMessage);
responseStatusCode = response.StatusCode;
responseBody = await response.Content.ReadAsStringAsync();
response.EnsureSuccessStatusCode();
}
return View();
}
您正尝试以 application/json
的形式发送请求,但您将正文参数指定为 application/x-www-form-urlencoded
(使用 FormUrlEncodedContent
class)。只需更改您的代码以发送 json 字符串而不是
public class MyRequest
{
[JsonProperty("card_number")]
public string CardNumber { get; set; }
[JsonProperty("customer_id")]
public string CustomerId { get; set; }
}
using (var httpClient = new HttpClient())
{
var request = new MyRequest
{
CardNumber = "4012001037141112",
CustomerId = "custumer123"
};
var requestBody = JsonConvert.SerializeObject(request);
var requestMessage = new HttpRequestMessage()
{
Method = new HttpMethod("POST"),
RequestUri = new Uri("https://api-sandbox.getnet.com.br/v1/tokens/card"),
Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
};
requestMessage.Headers.Add("Authorization", "Bearer ca22a2ge-1914-4b0c-a0fb-d3ce0fde7346");
requestMessage.Headers.Add("seller_id", "61c53d30-0d7f-3cf0-7662-c61714942d46");
var response = await httpClient.SendAsync(requestMessage);
var responseStatusCode = response.StatusCode;
var responseBody = await response.Content.ReadAsStringAsync();
response.EnsureSuccessStatusCode();
}
我得到 "Bad Request":"card_number should contain numbers only",正在尝试消耗一个 API。 我究竟做错了什么?有人可以帮忙吗?
API 参数必须是:
Header 参数
- Content-type = "application/json; charset=utf-8"
- 授权="Bearer AuthString"
- seller_id = "string "
RequestBody
- card_number = "string"
- customer_id = "string"
[POST]
"curl -X POST \nhttps://api-sandbox.getnet.com.br/v1/tokens/card \n-H 'authorization: Bearer ca22a2ge-1914-4b0c-a0fb-d3ce0fde7346' \n-H 'content-type: application/json; charset=utf-8' \n-d '{\n \"card_number\": \"4012001037141112\"\n}'\n"
public async Task<IActionResult> AuthGetToken()
{
using (var httpClient = new HttpClient())
{
parameters = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("card_number", "4012001037141112"), //(APi's card number given for tests purpose)
new KeyValuePair<string, string>("customer_id", "custumer123")
};
requestMessage = new HttpRequestMessage()
{
Method = new HttpMethod("POST"),
RequestUri = new Uri("https://api-sandbox.getnet.com.br/v1/tokens/card"),
Content = new FormUrlEncodedContent(parameters)
};
requestMessage.Headers.Clear();
requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
requestMessage.Headers.Add("Authorization", "Bearer ca22a2ge-1914-4b0c-a0fb-d3ce0fde7346");
requestMessage.Headers.Add("seller_id", "61c53d30-0d7f-3cf0-7662-c61714942d46");
response = await httpClient.SendAsync(requestMessage);
responseStatusCode = response.StatusCode;
responseBody = await response.Content.ReadAsStringAsync();
response.EnsureSuccessStatusCode();
}
return View();
}
您正尝试以 application/json
的形式发送请求,但您将正文参数指定为 application/x-www-form-urlencoded
(使用 FormUrlEncodedContent
class)。只需更改您的代码以发送 json 字符串而不是
public class MyRequest
{
[JsonProperty("card_number")]
public string CardNumber { get; set; }
[JsonProperty("customer_id")]
public string CustomerId { get; set; }
}
using (var httpClient = new HttpClient())
{
var request = new MyRequest
{
CardNumber = "4012001037141112",
CustomerId = "custumer123"
};
var requestBody = JsonConvert.SerializeObject(request);
var requestMessage = new HttpRequestMessage()
{
Method = new HttpMethod("POST"),
RequestUri = new Uri("https://api-sandbox.getnet.com.br/v1/tokens/card"),
Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
};
requestMessage.Headers.Add("Authorization", "Bearer ca22a2ge-1914-4b0c-a0fb-d3ce0fde7346");
requestMessage.Headers.Add("seller_id", "61c53d30-0d7f-3cf0-7662-c61714942d46");
var response = await httpClient.SendAsync(requestMessage);
var responseStatusCode = response.StatusCode;
var responseBody = await response.Content.ReadAsStringAsync();
response.EnsureSuccessStatusCode();
}