1

私はWindows Phone 8アプリを開発しています。私のアプリでは、サービスを呼び出して、いくつかのデータをアプリにダウンロードしています。

Windows Phone 8エミュレーターでアプリをテストしていますが、何度もこのエラーがスローされます:

「リモートサーバーがエラーを返しました: NotFound.」

これは、私が httpwebrequest を作成して使用した方法です:-

public async Task<string> ServiceRequest(string serviceurl, string request, string methodname)
        {
            string response = "";
            try
            {

                var httpwebrequest = WebRequest.Create(new Uri(serviceurl)) as HttpWebRequest;
                httpwebrequest.Method = "POST";
                httpwebrequest.Headers["SOAPAction"] = "http://tempuri.org/" + iTestservice + "/" + methodname + "";
                httpwebrequest.ContentType = "text/xml";


                byte[] data = Encoding.UTF8.GetBytes(request);
                using (var requestStream = await Task<Stream>.Factory.FromAsync(httpwebrequest.BeginGetRequestStream, httpwebrequest.EndGetRequestStream, null))
                {
                    await requestStream.WriteAsync(data, 0, data.Length);
                }

                var httpTask = httpRequest(httpwebrequest);
            var completeTask = await Task.WhenAny(httpTask, TaskEx.Delay(300000));
            if (completeTask == httpTask)
                return await httpTask;
            else
                httpwebrequest.Abort();
            throw new TimeoutException("Service Timed Out");

        }
        catch (TimeoutException Tex)
        {
            throw Tex;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
        public async Task<string> httpRequest(HttpWebRequest request)
        {
            string received;

            using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
            {
                using (var responseStream = response.GetResponseStream())
                {
                    using (var sr = new StreamReader(responseStream))
                    {

                        received = await sr.ReadToEndAsync();
                    }
                }
            }

            return received;
        }

私は本当に何が問題だったのか理解できません

ご注意ください :-

エミュレーターブラウザーでサイト (アプリがアクセスしようとしているサービス URL) を開こうとしましたが、正しく開きました。問題はありませんでした。

1)それは私のコードの問題ですか?もしそうなら、私を修正してください??

2)これはエミュレーターの問題ですか、それとも接続の問題ですか??

3)これは、エミュレーターで開かれている認定の問題ですか??

問題を修正する方法について長い間調査した後でも、修正できませんでした。

私を助けてください。

前もって感謝します。

4

2 に答える 2

0

このように、httpsリクエストに空の資格情報を追加することを解決しました

    httpwebrequest.Credentials = new NetworkCredential("", "");

ここで彼は理由を説明します

http://blog.toetapz.com/2010/11/15/windows-phone-7-and-making-https-rest-api-calls-with-basic-authentication/

于 2014-09-10T19:35:51.527 に答える