C#HttpWebRequest返回空白
我一直在阅读无数相关的问题到我的问题,但他们都没有解决我的问题。我正在c#中发布一个HttpWebRequest,其中我发布数据,然后读取响应,但响应始终返回为空。我试图更改request.contentType
,以unncoded,ASCII,& UTF8编码各种格式的数据。不管我做什么,我的回答都是空白的。另外,作为一个侧面说明,我的要求是通过层会7C#HttpWebRequest返回空白
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
只是为了通知大家,我终于抓住了问题的根源。服务提供者必须重新启动服务器,因为数据库连接已经结束。经过大约一周与这段代码的战斗,我想他们决定终于检查我.....感谢所有谁试图帮助!
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;
}
这是我用来从url获取响应对象的方法,您可以将webRequest.Method更改为GET etcetera。
首先检查响应HTTP代码。您还正在使用授权。检查授权标头值是否正确。如果您使用不记名令牌授权,则需要将“承载”放在报头中的实际令牌之前。
我正在使用授权和我的授权标头值是正确的。如果我通过第7层得到异常,它不会显示某种形式的错误吗? – Konan
这取决于后端的实现。正确的方法是通过HTTP代码返回状态。 –
你有没有尝试过使用像Fiddler这样的东西来实际**看**你通过电线发送和接收的内容? –
是的,我一直在使用提琴手和身体似乎是正确的。另外fiddler不显示任何例外的交易。 – Konan
我在小提琴手看到没有响应身体。显然,我没有得到任何回报。内容长度:0,内容类型:application/octet-stream – Konan