【发布时间】:2016-06-15 13:41:35
【问题描述】:
我尝试使用 GET 和参数创建请求。但是,我遇到了 WinPhone8.1 的异常,这意味着由于添加了内容,GET 是违反协议的。因此,发出 POST 请求是解决方案。
尽管进行了搜索,但我仍然无法设置 HttpWebRequest 的内容长度属性。为什么?
private static async void AsyncRequest(string url, string contentType, string methodType, int contentLenght, Action<Object, string> callback, Action<HttpStatusCode, JObject, Action<Object, string>> parserFunction)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = contentType;
request.Method = methodType;
request.Proxy = null;
if (methodType == Method.POST)
{
request.ContentLenght = "contentLenght";
request.Headers["content-length"] = "contentLenght";
request.Headers["Content-Length"] = "contentLenght";
request.Headers[HttpRequestHeader.ContentLength] = "contentLenght";
request.Headers["HttpRequestHeader.ContentLength"] = "contentLenght";
request.Content.Headers.ContentLength = "contentLenght";
...........
Nothing works ><
}
Debug.WriteLine("1");
Task<WebResponse> task = Task.Factory.FromAsync(
request.BeginGetResponse,
asyncResult => request.EndGetResponse(asyncResult),
(object)null);
Debug.WriteLine("2");
await task.ContinueWith(t => ReadStreamFromResponse(t.Result, callback, parserFunction));
}
【问题讨论】:
-
什么是
"contentLenght"?它不应该是一个长值而不是字符串吗? @Emixam23 -
因为 VS2015 说:“不能将类型 'int' 隐式转换为 'string'”
-
以字符串格式添加一个数值为“1000”。
-
request.Headers["Content-Length"] = "1000";
标签: http-post xamarin.forms system.net.httpwebrequest http-content-length