【问题标题】:How to send / receive cURL/API requests in C#如何在 C# 中发送/接收 cURL/API 请求
【发布时间】:2015-10-12 00:10:37
【问题描述】:

我的 c# 程序在向在线电话系统发送或接收 cURL 请求时遇到问题,我希望在那里得到一些帮助 :)

我想发送这样的命令:

curl https://api.placetel.de/api/test \
    -d 'api_key=XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX'

服务器返回 XML 格式

<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <result>1</result>
  <result-code>success</result-code>
  <descr>test login successful v1.1</descr>
</hash>

我尝试使用WebRequest Class (msdn),但我没有连接。

“System.dll 中的错误 System.Net.WebException”连接到服务器失败

WebRequest request = WebRequest.Create("https://api.placetel.de/");           
            request.Method = "POST";           
            string postData = "-d 'api_key=XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX'";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            request.ContentType = "/api/test.xml";

有一个来自电话在线系统提供商的 API documentation,但只有德语。

问候

【问题讨论】:

  • 你的网址是https://api.placetel.de/api/test 不是https://api.placetel.de/
  • 既然您的问题已有答案,您不应将其编辑为新问题。相反,发布一个新问题。您刚刚使当前的答案过时了。我建议您回滚您的编辑(通过“x 时间前编辑”),然后发布一个带有新错误的新问题。
  • 对不起 :) 我会这样做的

标签: c# api curl webrequest


【解决方案1】:

我更喜欢使用 WebClient

WebClient wc = new WebClient();
var buf = wc.UploadValues("https://api.placetel.de/api/test", 
                           new NameValueCollection() { { "api_key", "XXXX" } });
var xml = Encoding.UTF8.GetString(buf);

HttpClient

HttpClient client = new HttpClient();
var content = new FormUrlEncodedContent(new Dictionary<string, string>() { 
        { "api_key", "XXXX" } 
});
var resp =  await client.PostAsync("https://api.placetel.de/api/test",content);
var xml = await resp.Content.ReadAsStringAsync();

有更容易使用的方法。

顺便说一句,-d (or --data)curl 的参数,不会发送到服务器

PS:您可能还想阅读一些关于ContentType http://www.freeformatter.com/mime-types-list.html

【讨论】:

  • 发送看起来工作正常 - 没有错误。通过收到相同的错误消息的答案 - 请参阅上面的编辑 - 谢谢 :)
猜你喜欢
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 2023-03-25
  • 1970-01-01
  • 2011-05-05
  • 2012-06-16
  • 2016-06-01
相关资源
最近更新 更多