我正在尝试向REST服务编写简单请求。请遵循REST服务提供商提供的文档:
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。路径'',第0行,第0位
代码好吗?为什么我收到这条消息?
答案 0 :(得分:2)
大多数情况都是这样,因为在服务器端生成JSON的脚本会将字节顺序标记添加到响应中。
但是,在您的情况下,您尝试将流转换为JSON,而不是流的内容。您需要从流中读取所有文本并从中反序列化该对象。您需要在流上调用其中一个读取内容的方法。
答案 1 :(得分:0)
我用你的建议修改了我的代码并且它有效。现在我遇到发送数据的问题:)
Subscription user1 = new Subscription
{
Email = "kubaIt@test.com.pl",
List = "xfct2bjcdv",
};
List<Subscription> user = new List<Subscription>();
user.Add(user1);
string json = JsonConvert.SerializeObject(user);
string data = json;
我在上面添加了。其他代码是一样的。我收到错误:请求已中止:请求已取消。“
json = [{\“email \”:\“kubaIt@test.com.pl \”,\“list \”:\“xfct2bjcdv \”}] //来自debuger的值