繁体   English   中英

Windows Phone 8.1 WebRequest POST获得响应

[英]Windows Phone 8.1 webrequest POST get response

我正在尝试使用POST数据发出Web请求并获取响应。 我已经可以在Android上使用它,但是对于Windows Phone却无法以相同的方式工作,而且我似乎无法使其正常工作。 我目前在GetRequestStreamdGetResponse遇到错误。 我已经尝试了asyncawait但它返回了空指针。 我在Android中使用了以下代码:

public static string Login(string user, string pwd)
    {
        WebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("myurl");
        httpWebRequest.Method = "POST";
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            LoginData data = new LoginData
            {
                userid = user,
                password = pwd
            };
            var json = JsonConvert.SerializeObject(data);

            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Dispose();
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            return streamReader.ReadToEnd();
        }
    }

我已经工作了! 答案显示在下面的代码中。

public static string postData;
    public static string responseString;

    public static async Task PostJsonRequest()
    {
        string AuthServiceUri = "myurl"; 
        HttpWebRequest spAuthReq = WebRequest.Create(AuthServiceUri) as HttpWebRequest;
        spAuthReq.ContentType = "application/json";
        spAuthReq.Method = "POST";
        spAuthReq.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), spAuthReq);
    }

    public static void GetRequestStreamCallback(IAsyncResult callbackResult)
    {
        HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
        Stream postStream = myRequest.EndGetRequestStream(callbackResult);
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        postStream.Write(byteArray, 0, byteArray.Length);
        postStream.Dispose();
        myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), myRequest);
    }

    public static void GetResponsetStreamCallback(IAsyncResult callbackResult)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);

            Stream streamResponse = response.GetResponseStream();
            StreamReader reader = new StreamReader(streamResponse);
            responseString = reader.ReadToEnd();
            streamResponse.Dispose();
            reader.Dispose();
            response.Dispose();
        }
        catch (Exception e)
        {

        }
    }

    public static void EnterLoginValues(string user, string pwd)
    {
        LoginData data = new LoginData
        {
            userid = user,
            password = pwd
        };
        postData = JsonConvert.SerializeObject(data);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM