【问题标题】:Simple REST request c# - error简单的 REST 请求 c# - 错误
【发布时间】:2013-12-21 09:04:33
【问题描述】:

我正在尝试向 REST 服务编写简单的请求。请参阅 REST 服务提供商的文档:

  1. 我应该在标头 Content-Type: application/json 中使用。
  2. json格式的响应返回
  3. 对于授权过程,我必须发送两个标头,一个带有 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() 不会返回流的内容

标签: c# json rest


【解决方案1】:

我根据您的建议修改了我的代码并且它有效。现在我发送数据有问题:)

 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\"}] //来自调试器的值

【讨论】:

    【解决方案2】:

    这主要是因为在服务器端生成 JSON 的脚本将字节顺序标记添加到响应中。

    但是,在您的情况下,您尝试将流转换为 JSON,而不是流的内容。您需要从流中读取所有文本并从中反序列化对象。您需要在读取内容的流上调用其中一种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多