-1

您如何使用 将 curl 转换为在 C# 中使用HttpClient

这是我需要使用的 curl 调用:

Request:
curl -i \
-X POST \
-H "X-Version: 1" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Your Authorization Token" \
-H "Accept: application/json" \
-d '{"text":"Test Message","to":["Recipients Mobile Number"]}' \
-s \
https://api.clickatell.com/rest/message

我有 HttpClient 的基本知识,但我对 curl 调用一无所知,所以这就是我可以从谷歌搜索得出的结论。下面是我的代码,不知道是否正确?

using (var httpClient = new HttpClient())
{
     httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "abcdefghij0123456789");

     httpClient.DefaultRequestHeaders.Accept.Clear();
     httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

     httpClient.DefaultRequestHeaders.Add("X-Version", "1");

     StringContent stringContent = new StringContent("{\"text\":\"Test Message\",\"to\":[\"27936906909\"]}");
     stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

     HttpResponseMessage httpResponseMessage = await httpClient.PostAsync("https://api.clickatell.com/rest/message", stringContent);
     if (httpResponseMessage.IsSuccessStatusCode)
     {
     }
     else
     {
          string failureMsg = "HTTP Status: " + httpResponseMessage.StatusCode.ToString() + " - Reason: " + httpResponseMessage.ReasonPhrase;
     }

     //string sjson = await httpResponseMessage.Content.ReadAsAsync<string>();
     //return sjson;
}

一切看起来都是正确的,但是当我运行它时,我不断收到一个错误的请求。我不确定如何解决这个问题?不确定我是否错过了 curl 通话中的某些内容?

4

1 回答 1

0

当有人尝试调试网络问题时,我会回复我总是回复的相同内容。安装wireshark,用你想模仿的流量创建一个会话,然后用你自己的代码创建另一个。这将使您能够准确地看到正在发生的事情以及哪些标头未正确传输。

于 2014-11-03T09:18:58.860 回答