nuc*_*ons 5 c# http windows-phone windows-phone-8 windows-phone-8.1
我得到一个例外,因为"标题有一个空值".这是POST请求.在某些情况下,我需要将一些标头值发送为空.
这是我的代码:
private void Start()
{
try
{
this.webRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(this.requestURL);
//this.webRequest.Headers[HttpRequestHeader.UserAgent] = this.userAgent;
webRequest.Headers[HttpRequestHeader.CacheControl] = "no-cache";
webRequest.Headers[HttpRequestHeader.Pragma] = "no-cache";
webRequest.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString();
webRequest.Method = "POST";
if (headers != null && headers.Count > 0)
{
webRequest.Headers["some-Header"] = "";
}
IAsyncResult result = this.webRequest.BeginGetRequestStream(new AsyncCallback(RequestCallback), webRequest);
}
catch (Exception ex)
{
}
}
void RequestCallback(IAsyncResult result)
{
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
//if (RequestBody != null)
{
using (Stream postStream = request.EndGetRequestStream(result))
{
using (var writer = new StreamWriter(postStream))
{
writer.Write(string.Empty);
writer.Flush();
postStream.Position = 0;
byte[] mArray = new byte[postStream.Length];
postStream.Read(mArray, 0, (int)postStream.Length);
}
}
}
request.BeginGetResponse(new AsyncCallback(OnRequestResponse), request);
}
private void OnRequestResponse(IAsyncResult ar)
{
try
{
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)this.webRequest.EndGetResponse(ar);
webResponseHeaders = response.Headers.GetHeaders();
System.IO.Stream responseStream = response.GetResponseStream();
}
catch (Exception ex)
{
}
}
Run Code Online (Sandbox Code Playgroud)
在System.Net.HttpWebResponse的OnRequestResponse回调中获取异常response =(System.Net.HttpWebResponse)this.webRequest.EndGetResponse(ar);
小智 1
首先,尝试将您的解决方案升级到 Windows Phone 8.1 有 2 个选项:Silverlight 8.1(您可以重用所有代码)或 WP 8.1 RT(轻松在 WP 和 Windows 8.1 之间重用代码)。我建议使用 Silverlight 8.1,因为您已经有正在开发的 Silverlight 8.0 应用程序。
第二件事:回调有点旧了。考虑将代码升级为 Await 和 Async 方法,因为它自然受支持
对于您的问题,请尝试使用 HttpClient 发送请求。这里是一个代码示例:
public static async Task<string> GetHttpAsStringTask(string uriString)
{
string result;
Uri targetUri = new Uri(uriString);
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, targetUri);
//Add your empty header here
request.Headers.Add("Header name","header value");
HttpResponseMessage response = await client.SendAsync(request);
using (Stream responseStream = await response.Content.ReadAsStreamAsync())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
result = reader.ReadToEnd();
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
用法:
string response = await GetHttpAsStringTask("your url");
Run Code Online (Sandbox Code Playgroud)
对于 WP 8 中的等待和异步:http://developer.nokia.com/community/wiki/Asynchronous_Programming_For_Windows_Phone_8
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |