我一直在阅读无数相关的问题,但我们没有解决我的问题。我在c#中创建一个HttpWebRequest,其中我发布数据然后读取响应,除了响应总是返回为空。我尝试更改request.contentType
,以各种格式编码数据,来自未编码,ASCII和& UTF8。无论我做什么,我的回答都是空白的。另外作为附注,我的请求是通过第7层。
var request = (HttpWebRequest)WebRequest.Create(serviceURL);
var postData = "\"device\"=\"9856\"";
var data = Encoding.ASCII.GetBytes(postData);
//request.ContentType = "application/x-www-form-urlencoded";
request.ContentType = "application/json; charset=utf-8";
request.Timeout = 5000;
request.Headers.Add("Authorization", b64);
request.Headers.Add("reqtime", hmacTS);
request.Headers.Add("appkey", APP_KEY1);
request.Method = "POST";
request.ContentLength = data.Length;
try
{
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
updateWindow(this, "Results: " + result);
updateWindow(this, "Type: " + response.ContentType);
updateWindow(this, "Content Length: " + response.ContentLength);
}
}
catch (WebException a)
{
updateWindow(this, "ERROR: " + a);
}
我的回复显示为:
Results:
Type: application/octet-stream
Content Length: 0
为了更新所有人,我终于找到了问题的根源。服务提供商必须重新启动服务器,因为数据库连接已经关闭。用这段代码打了大约一个星期后,我猜他们决定最后检查一下......感谢所有试图帮助的人!
答案 0 :(得分:0)
public static bool GetResponseForJson( string url, out object jsonObject )
{
bool result;
try {
HttpWebRequest webRequest = ( HttpWebRequest )WebRequest.Create( url );
webRequest.Method = "POST";
HttpWebResponse httpWebResponse = ( HttpWebResponse )webRequest.GetResponse();
StreamReader sr = new StreamReader( httpWebResponse.GetResponseStream() );
jsonObject = new JavaScriptSerializer().DeserializeObject( sr.ReadToEnd() );
result = true;
}
catch {
jsonObject = null;
result = false;
}
return result;
}
这是我用来从网址获取响应对象的方法,您可以将webRequest.Method更改为GET等。
答案 1 :(得分:0)
首先检查是否有HTTP代码。你也在使用授权。检查Authorization标头值是否正确。如果您使用的是承载令牌授权,则需要将“承载”#34;在标题中的实际标记之前。
答案 2 :(得分:0)
在请求中添加 Accept 标头:
request.Headers.Add("Accept", "application/json");
这对我有用。