繁体   English   中英

Windows Phone 8.1的C#中的HttpRequest问题

[英]Problems with HttpRequest in c# for windows phone 8.1

我想获得一个字符串响应:

public async Task<string> CheckConnection(){
       //Declarations of Variables
        string result = "";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.ContinueTimeout = 4000;
        request.Credentials = CredentialCache.DefaultNetworkCredentials;

        //Add headers to request
        request.Headers["Type"] = "CHECK";
        request.Headers["Device"] = "1";
        request.Headers["Version"] = "0.000";
        request.Headers["Os"] = "WindowsPhone";

        HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();

        if (response.StatusCode == HttpStatusCode.OK)
        {
            //To obtain response body
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamRead = new StreamReader(streamResponse, Encoding.UTF8);

            result = streamRead.ReadToEnd();
            streamRead.Dispose();
        }

        return result;
    }

    public async Task<string> SizeFit()
    {
        //Declarations of Variables
        string result = "";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Credentials = CredentialCache.DefaultNetworkCredentials;

        //Add headers to request
        request.Headers["Type"] = "SIZEFIT";
        request.Headers["Device"] = "1";
        request.Headers["Version"] = "0.000";
        request.Headers["Os"] = "WindowsPhone";

        HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
        if (response.StatusCode != null)
        {
            //To obtain response body
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamRead = new StreamReader(streamResponse, Encoding.UTF8);

            result = streamRead.ReadToEnd();
            streamRead.Dispose();
        }

        return result;
    } 

当我使用此通用函数获取1以获得真正的连接和大小时,但当我的zip的大小为4k时,总是返回1作为syze。

    public async Task<string> doSync()
    {
        //Declaration of variables
        string response = await CheckConnection();

        //When is 1, the checkConnection will connect then request Size of zip!
        if (response == "1")
        {
            response =  await SizeFit();
        }

        return response;
    }

有人可以帮助我吗? 提前致谢。

解决了! 只需添加:

 request.Headers["Cache-Control"] = "no-cache";
 request.Headers["Pragma"] = "no-cache";

这是针对Windows手机的httpwebrequest缓存问题!

暂无
暂无

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

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