首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在c#中重现工作卷曲不起作用

在c#中重现工作卷曲不起作用
EN

Stack Overflow用户
提问于 2021-06-19 08:02:40
回答 1查看 35关注 0票数 0

我一直在猛烈抨击这一点,但没有找到解决方案。正在复制此cURL。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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响应

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"data":{"ping":"pong"},"extensions":{"requestId":"bfxxxxxxxxxx-4f7a-bff1-88a5af755856"}}

这是我用c#写的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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();
            }
        }
    }

响应包含。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Id = 50, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}"

下面是我的输入值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
querystring "{ \"query\": \"query { ping }\", \"variables\": {} }"
Endpoint https://payments.sandbox.braintree-api.com/graphql
Authorization basic end6bXo5Mm0yenRiZDd3MjpiMzzzzzzzzzzzzzzzzzzzzzzzzDg2MA==

我们将非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-06-19 08:27:02

当你这样做的时候

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        var response = httpClient.SendAsync(request);
        return response.Status.ToString();

response是一个Task。所以这是一个hasen还没有完成的过程。您应该等待请求完成。一种快捷的方法是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        var response = httpClient.SendAsync(request).Result;
        return response.StatusCode;

请注意,这会将response的类型从Task<HttpResponseMessage>更改为HttpResponseMessage,因此您可能需要调整代码。解决这个问题的更好方法是使您自己的方法异步并执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        var response = await httpClient.SendAsync(request);
        return response.StatusCode;

但这也意味着要更改您的调用代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68044812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文