서버에 HttpsURLConnection을 만들기 위해 동일한 코드를 사용하는 여러 응용 프로그램이 있습니다. 때때로 장치와 통신 할 수 없지만 동일한 HttpsURLConnection 코드를 실행하는 다른 장치가 동일한 서버 주소에 아무런 문제가 없습니다.Android Studio 일시적인 HttpsURLConnection 오류
때로는 첫 번째 장치가 여러 번 시도한 후에 연결을 시도하는 경우가 있습니다. 그러나 기기의 Wi-Fi 연결을 재설정하면 즉시 수정됩니다.
이것은 내가 서버에 연결된 라우터가 라우팅 테이블에서 장치를 떨어 뜨리고 있다고 생각하게 만들었지 만, 코드에서 눈을 띄워 주셔서 감사합니다.
class WebRequest {
static String response = null;
public final static int GET = 1;
private final static int POST = 2;
//Constructor with no parameter
public WebRequest() {
}
/**
* Making web service call
*
* @url - url to make request
* @requestmethod - http request method
*/
public String makeWebServiceCall(String url, int requestmethod) {
return this.makeWebServiceCall(url, requestmethod, null);
}
/**
* Making service call
*
* @url - url to make request
* @requestmethod - http request method
* @params - http request params
*/
private String makeWebServiceCall(String urladdress, int requestmethod,
HashMap<String, String> params) {
URL url;
String response = "";
try {
url = new URL(urladdress);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setDoInput(true);
if (requestmethod == POST) {
conn.setRequestMethod("POST");
} else if (requestmethod == GET) {
conn.setRequestMethod("GET");
}
if (params != null) {
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
StringBuilder result = new StringBuilder();
boolean first = true;
for (Map.Entry<String, String> entry : params.entrySet()) {
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}
writer.write(result.toString());
writer.flush();
writer.close();
os.close();
}
int responseCode = conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = br.readLine()) != null) {
response += line;
}
} else {
response = "";
}
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
}
내가 AsyncTask를 내이를 사용하여 다른 활동에서 해당 코드를 호출 오전 :
WebRequest webreq = new WebRequest();
request = webreq.makeWebServiceCall(URL, WebRequest.GET);
내가 그 걱정을
나는 다음과 같은 코드로 HttpsURLConnection에를 만들기 위해 별도의 활동이 코드 내의 어떤 요소로 인해 해당 장치에서 간헐적 인 연결 문제가 발생합니다. 내가 알아챈 한 가지는 connection.disconnect가 없다는 것입니다.이 문제에 대한 통찰력을 가져 주셔서 감사합니다.
코드와 관련이 없습니다. 하지만 당신이 설명하는대로 그 장치. – greenapps
감사합니다. 내가 잊어 버린 점은 HttpUrlConnections를 만드는 것을 멈추는 장치가 다른 응용 프로그램 인 YouTube, Google 에스트를 통해 인터넷에 연결할 수 있다는 것입니다. 그러나 인터넷과 서버는 모두 같은 라우터에 있습니다. – matthew