내 Windows Phone 앱 빈 응답 받기(404 찾을 수 없음) 시간이 촉박합니다. 처음으로 작업이 잘되었습니다. SSL 없이도 항상 잘 작동합니다.

StackOverflow https://stackoverflow.com//questions/24038530

  •  21-12-2019
  •  | 
  •  

문제

첫 번째 windowsPhone 8.1 응용 프로그램을 구축 중입니다. 내 응용 프로그램의 역할은 서버와의 연결을 생성하여 정보를 가져오는 것입니다. 따라서 일부 정보를 얻기 위해 json-rpc 요청을 서버에 보내 이 프로세스를 수행하는 코드를 작성하고 있습니다. 처음에는 성공적으로 받았지만 두 번째 요청을 보낼 때 404 오류(페이지를 찾을 수 없음)와 함께 빈 응답을 받았습니다.하지만 https(http 전용) 없이 서비스를 호출하면 호출 횟수에 관계없이 잘 작동합니다!

   public async Task<string> GetDataFromServer(string urlToCall, string JSONData,string RR)
        {
            string UserName = “XXXXXXX”
            string Password = "XXX";

            using ( var handler = new HttpClientHandler())
            {
                handler.Credentials = new NetworkCredential(UserName, Password);
                HttpClient client = new HttpClient(handler);

                HttpResponseMessage response = null;

            try
            {


                response = await client.PostAsync(urlToCall, new StringContent(JSONData.ToString(), Encoding.UTF8, " application/json"));
               string res = response.Content.ReadAsStringAsync().Result;




                Windows.UI.Popups.MessageDialog g = new Windows.UI.Popups.MessageDialog(res);
                await g.ShowAsync();
                return res;

            }
            catch (Exception ex)
            {


                Windows.UI.Popups.MessageDialog g = new Windows.UI.Popups.MessageDialog("Error is : " + ex.Message);
               g.ShowAsync();
               return "Error";
            }
            finally
            {
                response.Dispose();
                client.CancelPendingRequests();
                client.Dispose();
                handler.Dispose();
            }
            }

        }

다시 말하지만, 처음에는 서비스 URL(https로 시작)을 호출하면 검색된 데이터에 대한 응답을 받았지만 두 번째에는 404 오류(페이지를 찾을 수 없음)와 함께 빈 응답을 받았습니다!!도움 좀 주세요

도움이 되었습니까?

해결책

이 솔루션을 사용해보십시오.

        public async Task<string> SendJSONData3(string urlToCall, string JSONData)
    {
        string UserName = "XXXXXXXXX";
        string Password = "XXXXXXXXX";
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(urlToCall);
        httpWebRequest.Credentials = new NetworkCredential(UserName, Password);
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";
        using (var streamWriter = new StreamWriter(await httpWebRequest.GetRequestStreamAsync()))
        {
            string json = JSONData;
            streamWriter.Write(json);
            streamWriter.Flush();
        }
        var httpResponse = (HttpWebResponse)await httpWebRequest.GetResponseAsync();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            return result;
        }

    }
.

다른 팁

몇 가지 아이디어:

  • 다음을 사용하지 마십시오. .Result 재산.그냥 사용 await 대신 교착 상태를 피하기 위해.
  • 미디어 유형 매개변수 앞의 추가 공백을 제거합니다. " application/json"
  • 웹 서버에서 로깅을 활성화하고 두 번째 요청이 서버에 도착하는지 확인합니다.
  • 예를 들어 다음을 사용하여 네트워크 추적을 가져옵니다. 와이어샤크 또는 바이올리니스트.
  • 넣어보세요 WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp); 이 제안에 따라 초기화 코드에서 답변.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top