首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows hone 8中Httpwebrequest POST的执行流程

Windows hone 8中Httpwebrequest POST的执行流程
EN

Stack Overflow用户
提问于 2013-09-06 00:50:41
回答 2查看 211关注 0票数 0

例如,如果我在Windows Phone 8中有以下代码

代码语言:javascript
复制
    string __retS = null;

    private String postRequest(String url, String postData)
    {
        byte[]byteData = Encoding.UTF8.GetBytes(postData);
        HttpWebRequest request = null;

            try
            {
                Uri uri = new Uri(url);
                request = (HttpWebRequest)WebRequest.Create(uri);
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = byteData.Length;

                // start the asynchronous operation
                request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);

            } // end try
            catch (Exception)
            {
            }
            return __retS;
        }

我在这一行request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);上设置了一个断点。我本以为执行会跳转到我的GetRequestStreamCallback方法,但它并没有,而是继续执行返回语句,因此总是返回一个空值。

这是不是应该这样呢?

EN

回答 2

Stack Overflow用户

发布于 2013-09-06 01:16:41

应该是这样的吗?

是。当工作完成时,它将调用您传递的回调函数。参见"Asynchronous Programming Model (APM)"。从.Net 4.5 / c# 5.0开始,你可以使用async/await,它可以帮助你更简单地编写异步代码。

代码语言:javascript
复制
var stream = await request.GetRequestStreamAsync();
//...do some work using that stream
票数 0
EN

Stack Overflow用户

发布于 2013-09-06 01:44:45

回调是异步执行的,这意味着在分配异步方法后,代码会继续执行。(request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);)

WebRequest完成时,将执行GetRequestStreamCallback。因为如果此请求是同步的,UI线程将被阻塞,所以windows phone sdk只提供异步请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18641857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档