【发布时间】:2013-12-21 09:04:33
【问题描述】:
我正在尝试向 REST 服务编写简单的请求。请参阅 REST 服务提供商的文档:
- 我应该在标头 Content-Type: application/json 中使用。
- json格式的响应返回
- 对于授权过程,我必须发送两个标头,一个带有 APIKey,第二个带有 APISign
REST 服务中的控制器 PING 以测试代码。
我使用 .net 2.0
string sha1String = APIKey + "/rest/ping" + APISecret;
string XRestApiSign = SHA1HashStringForUTF8String(sha1String);
string data = "";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(restServer);
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("X-Rest-ApiSign", XRestApiSign);
request.Headers.Add("X-Rest-ApiKey", APIKey);
request.ContentLength = data.Length;
StreamWriter requestWriter;
Stream webStream = request.GetRequestStream();
using (requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII)) ;
{
requestWriter.Write(data);
}
request.BeginGetResponse((x) =>
{
using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(x))
{
List<string> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(response.GetResponseStream().ToString());
}
}, null);
我应该得到响应字符串 PONG 但我得到以下消息
解析值时遇到意外字符:S. Path '', line 0, position 0
代码正常吗?为什么我会收到此消息?
【问题讨论】:
-
我认为这不会返回您期望的返回值:
response.GetResponseStream().ToString() -
正如@talzaj 所说,
.ToString()不会返回流的内容