내 Windows Phone 앱 빈 응답 받기(404 찾을 수 없음) 시간이 촉박합니다. 처음으로 작업이 잘되었습니다. SSL 없이도 항상 잘 작동합니다.
-
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;
}
}
. 다른 팁
몇 가지 아이디어:
제휴하지 않습니다 StackOverflow