C#使用身份验证标头发布JSON

时间:2015-06-03 10:46:11

标签: c# json post

我在发布带有身份验证/授权的JSON时遇到问题。下面是我的代码..对手说他们没有收到标题......我不明白为什么......

ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(stringData);

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(serverURL);
req.Method         = "POST";
req.ContentType    = "application/json";
req.ContentLength  = data.Length;
req.Headers.Add("Authentication", merchantID);
req.Headers["Authentication"] = merchantID;

Stream newStream = req.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();

HttpWebResponse response = (HttpWebResponse)req.GetResponse();
string returnString = response.StatusCode.ToString();

2 个答案:

答案 0 :(得分:0)

我正在编写一些示例代码来在您调用服务时附加标头... 希望它是必要的......

ASCIIEncoding encoding = new ASCIIEncoding(); byte [] data = encoding.GetBytes(stringData);

     HttpWebRequest reqest = (HttpWebRequest)WebRequest.Create(serviceUri);  
      reqest.Headers.Add(LoginName,LoginName);
      reqest.Headers.Add(AuthenticationKey,AuthenticationKey);
      reqest.Headers.Add(SessionKey,SessionKey);
      reqest.ContentType = "application/json";

   Stream newStream = req.GetRequestStream();
   newStream.Write(data, 0, data.Length);
   newStream.Close();

  HttpWebResponse response = (HttpWebResponse)req.GetResponse();
  string returnString = response.StatusCode.ToString();

答案 1 :(得分:0)

我不能确定问题出在哪里。它甚至可以在服务器端。 最近我参与了一个带头标识的项目,我注意到了一件有趣的事情。我的PHP服务器通过' HTTP _'收到了这些标头。前缀。

换句话说,我提出的请求是:

req.Headers.Add("Authentication", merchantID);

以这种方式在服务器上收到它:

echo $_SERVER['HTTP_Authentication'];

我花了很多时间才找到它。 实际上,您可以询问对手是否存在任何类似的标题,或者让他更好地检查您的请求并给您反馈。

,请尝试使用WebClient。也许,这会有所帮助 此外,它更方便。

string data = "{\"a\": \"b\"}";

WebClient client = new WebClient();

client.Headers.Add("Content-Type", "application/json");
client.Headers.Add("Authentication", merchantID);

var result = client.UploadString(serverURL, "POST", data);