Windows phone 8.1 HttpWebRequest

Windows phone 8.1 HttpWebRequest

我在 Windows phone 应用程序中实现 HttpWebRequest 时遇到一些问题。

这是我第一次做这个class,我不知道如何实现方法:

这是我的要求:

            HttpWebRequest request = WebRequest.Create(fullPath) as HttpWebRequest;

我的目标是 return 2 个值:一个引用字符串,它是下载文件的名称(它与传递给 URL 的文件名不同,因为标题是我的sha256 代码。)和下载文件内容的 JsonTextReader。

这是我需要总结的方法:

shaDownloaded = response.Headers["Content-Disposition"].Replace("attachment; filename=", String.Empty).Replace("\"", String.Empty);
reader = new StreamReader(response.GetResponseStream());
JsonTextReader jReader = new JsonTextReader(reader);
return jReader;

我的问题是我不知道如何达到这一点。我尝试了一些方法,但我总是让下载与 stackTrace 异步,所以总是空响应。任何人都可以帮助实施一个好的方法吗?这是我的部分代码:

public JsonTextReader DownloadFileFromService(string fileUrl, string fileName, string oldSha, ref string newSha)
    {
        try
        {
            string fullPath = string.Format(fileUrl + fileName + "&sha=" + oldSha);
            StreamReader reader;

            HttpWebRequest request = WebRequest.Create(fullPath) as HttpWebRequest;

            // Get response here {

                shaDownloaded = response.Headers["Content-Disposition"].Replace("attachment; filename=", String.Empty).Replace("\"", String.Empty);

                reader = new StreamReader(response.GetResponseStream());
            //}

            JsonTextReader jReader = new JsonTextReader(reader);
            return jReader;

        } catch(Exception ex){
            return null;
        }
    }

我真的解决不了这个问题。感谢您提供任何帮助的建议

嗯,我不知道我是否理解你的问题,但我试着回答

我就是这样使用HttpWebRequest的,试试实现吧

public async Task<object []> ApiCommand(string api, string json)
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(Variables.apiURL + api);
        httpWebRequest.ContentType = "text/plain; charset=utf-8";
        httpWebRequest.Method = "POST";

        HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        try
        {
            HttpResponseMessage response = await client.PostAsync(Variables.apiURL + api, new StringContent(json, Encoding.UTF8, "application/json"));

            return new[] {response.StatusCode.ToString(), await response.Content.ReadAsStringAsync()};
        }
        catch (Exception ex)
        {
            return new[] {"EXCEPTION", ex.ToString()};
        }
    }