我一直在猛烈抨击这一点,但没有找到解决方案。正在复制此cURL。
curl -H "Authorization: basic end6bXo5Mm0yenRiZDd3MjpiMzzzzzzzzzzzzzzzzzzzzzzzzDg2MA==" -H "Braintree-Version: 2019-01-01" -H "Content-Type: application/json" -X POST https://payments.sandbox.braintree-api.com/graphql -d "{\"query\": \"query { ping }\"}"
这返回了正确的json响应
{"data":{"ping":"pong"},"extensions":{"requestId":"bfxxxxxxxxxx-4f7a-bff1-88a5af755856"}}
这是我用c#写的。
public static string SendQuery(string queryString)
{
using (var httpClient = new HttpClient())
{
using (var request = new System.Net.Http.HttpRequestMessage(new HttpMethod("POST"), Endpoint))
{
request.Headers.TryAddWithoutValidation("BraintreeVersionHeader", "2021-06-18");
request.Headers.TryAddWithoutValidation("Content-Type", "application/json");
request.Headers.TryAddWithoutValidation("Authorization", "basic " + Base64Encode(PublicKey + ":" + PrivateKey));
request.Content = new System.Net.Http.StringContent(queryString);
request.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
var response = httpClient.SendAsync(request);
return response.Status.ToString();
}
}
}
响应包含。
Id = 50, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}"
下面是我的输入值。
querystring "{ \"query\": \"query { ping }\", \"variables\": {} }"
Endpoint https://payments.sandbox.braintree-api.com/graphql
Authorization basic end6bXo5Mm0yenRiZDd3MjpiMzzzzzzzzzzzzzzzzzzzzzzzzDg2MA==
我们将非常感谢您的帮助。
发布于 2021-06-19 08:27:02
当你这样做的时候
var response = httpClient.SendAsync(request);
return response.Status.ToString();
response
是一个Task
。所以这是一个hasen还没有完成的过程。您应该等待请求完成。一种快捷的方法是
var response = httpClient.SendAsync(request).Result;
return response.StatusCode;
请注意,这会将response
的类型从Task<HttpResponseMessage>
更改为HttpResponseMessage
,因此您可能需要调整代码。解决这个问题的更好方法是使您自己的方法异步并执行
var response = await httpClient.SendAsync(request);
return response.StatusCode;
但这也意味着要更改您的调用代码。
https://stackoverflow.com/questions/68044812
复制相似问题