【发布时间】:2015-07-22 19:08:24
【问题描述】:
我的 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)
有一个来自电话在线系统提供商的 API documentation,但只有德语。
好的,连接是这样的:
WebRequest request = WebRequest.Create("https://api.placetel.de/api/test.xml");
request.Method = "POST";
string postData = "-d 'api_key=XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX'";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
为了向我展示来自服务器的“答案”,我尝试这样做:
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
reader.Close();
dataStream.Close();
response.Close();
现在我在以下位置收到错误消息:
Stream dataStream = request.GetRequestStream();
“System.dll 中出现错误 System.Net.WebException” 连接服务器失败
我怎样才能解决这个问题并显示来自服务器的“答案”。
【问题讨论】:
-
我强烈建议您使用
HttpClient而不是更老的WebRequest类。另外,请将您的错误消息以文本形式发布在帖子正文中,而不是屏幕截图。 -
而且英文也有错误,这样你会得到更多的帮助,因为人们将能够理解它。
-
“System.dll 中的错误 System.Net.WebException” 连接服务器失败
-
“与服务器的连接失败”不是 .NET 异常。显示实际的完整异常、HTTP 状态代码和响应正文。此外,您不需要
-d(这很可能是异常的原因,因为服务器返回错误状态),这是“数据”的 cURL 命令行选项。
标签: c# curl webrequest