我在发布带有身份验证/授权的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();
答案 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);