- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下代码:
private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
Stream postStream = request.EndGetRequestStream(asynchronousResult);
//Console.WriteLine("Please enter the input data to be posted:");
//string postData = Console.ReadLine();
string postData = "my data";
// Convert the string into a byte array.
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Write to the request stream.
postStream.Write(byteArray, 0, postData.Length);
postStream.Close();
// Start the asynchronous operation to get the response
IAsyncResult result =
(IAsyncResult)request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
private void GetResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
Console.WriteLine(responseString);
// Close the stream object
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse
response.Close();
allDone.Set();
Dispatcher.BeginInvoke((Action)(() => Debug.WriteLine("George")));
}
但是,当我的代码命中 BeginGetResponse 时,它永远不会退出(而且我没有命中 GetResponseCallback 函数中的断点)。我尝试添加 BeginInvoke 调用,但我仍然没有进入此方法。此代码可在 Windows 控制台应用程序中运行 - 它在 Windows Phone 7 上不适用
谁能看出我做错了什么?
谢谢。
最佳答案
如果您在 UI 线程上创建了 HttpWebRequest,请确保您没有阻塞 UI 线程,否则可能会死锁。
您链接的桌面 .NET 示例未针对当前电话网络堆栈进行优化。您应该更改代码,以便在后台线程上创建 HttpWebRequest。
关于c# - WP7 应用程序永远不会退出 BeginGetResponse 并进入回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964616/
我需要对 Web 资源发出异步请求并使用此页面 (link to full example) 中的示例: HttpWebRequest myHttpWebRequest= (HttpWebReques
这是我的代码: namespace RequestApi { public partial class MainPage : PhoneApplicationPage {
因此,我正在创建一个使用HTTP API来获取约50,000个帐户中每个帐户状态的应用程序。该代码循环遍历每个帐户,并为其发送HTTP请求。当我根据某些条件收到http请求的响应时,将创建一个新线程来
我无法按照示例获取回调。 我有以下代码: private void startWebRequest(object sender, EventArgs e) { Uri url
我在任务工厂内部调用 httpwebresponse,执行 1 次后抛出异常 无法在上一个调用仍在进行时重新调用 BeginGetRequestStream/BeginGetResponse 我的代码
我想使用 BeginGetResponse 方法来调用列表中的许多 URL。我有 2 个关于如何实现这个的问题: 根据 http://msdn.microsoft.com/en-us/library/
我遇到这样一种情况,我需要通过 Web 请求发送自定义值,以便我可以在我的应用程序收到的响应中使用它。因为我的应用程序可能会发送多个请求,所以我正在使用 BeginGetResponse异步发送每个请
我正在尝试异步发出网络请求。我的代码工作正常,除了一件事:似乎没有内置方法可以在 BeginGetResponse 上指定超时。 MSDN 示例清楚地显示了一个工作示例,但其缺点是它们最终都以 Som
我正在编写一个 Windows Phone 8 应用程序,它应该向服务器发送 GET+POST 请求并解析答案。 我用来发送请求和获取响应的代码如下(它写在一个单独的静态类中):
我再次遇到 PCL(可移植类库)中的 WebRequest 问题。 我有这段代码: static ManualResetEvent allDone = new ManualResetEvent
我正在使用 HttpWebRequest 调用网络服务。如果 BeginGetResponse 的 AsyncCallback 抛出错误,我想将它传播到我的主程序流。我在执行此操作时遇到了问题,因为错
HttpWebRequest.BeginGetResponse 不遵守 HttpWebRequest 的任何超时属性(Timeout 或 ReadWriteTimeout)。 我阅读了一些方法来获得相
我正在高负载下测试 ASP.NET (.NET 4) 网络应用程序,发现在某些情况下 HttpWebRequest.BeginGetResponse() 会同步完成,不会抛出任何异常。 在高负载下在多
我有以下代码: private void GetRequestStreamCallback(IAsyncResult asynchronousResult) {
我在我的代码调用中使用 HttpWebRequest.BeginGetResponse() 方法从我的服务器获取数据。服务器生成的内容范围可能从几 KB 到几 GB。 我的问题是 HttpWebReq
我想知道这两种方法中哪种方法更好?我需要创建一个 200 毫秒到 5 秒之间的 Web 请求。我需要 html 响应才能继续 - 所以需要在主线程上阻塞。 第一种方法 string GetRespon
我正在使用一个使用 web 服务来推送一些事件的客户端 - web 服务的设计是这样的,即在客户端发布订阅命令时,它会发回一些感兴趣的事件并继续这样做只要客户端保持连接。 当 POST 命令时,服务会
目前在我们的一个应用程序中,我发现在执行第一个 HTTP Webrequest 时有很大的滞后。根据我们的日志,有 30 - 60 秒的延迟。它在 HttpWebRequest.BeginGetRes
我正在尝试异步获取 HttpWebResponse 对象,以便允许取消请求(使用 BackgroundWorker.CancellationPending 标志)。但是,下面的 request.Beg
我想在 UI 上显示下载正在进行时下载文件。使用 WebRequest 我有两个选择: 使用 WebRequest.BeginGetResponse 和相关方法。 优点:可以以字节为单位显示准确的进度
我是一名优秀的程序员,十分优秀!