2017-03-16 3 views
0

인터넷을 통해 여러 시간 동안 검색 한 결과 this as answer입니다. 그러나, 내 코드에서 이것을 어디에서 사용해야하는지 모른다. 하지에 무선 모바일 데이터를 사용하는 경우오류 java.net.ConnectException : 24000ms 후 연결 실패 : ECONNREFUSED (연결이 거부 됨)

I 타임 아웃을 증가하려고
public final static int GET=1; 
    public final static int POST=2; 
    public final static int PUT=3; 
    public final static int DELETE=4; 
    public final static String TAG="JSONParser"; 

    Context context; 
    public JSONParser(Context context){ 
     super(); 
     this.context=context; 
     //this.deviceId = Utility.getDeviceId(this.context); 
    } 
    public String getResponseString(String url,int method,String basicAuth){ 
     return makeServiceCall(url,method,null,basicAuth); 
    } 

    public String getResponseString(String url, int method, ContentValues params, String basicAuth){ 
     return makeServiceCall(url,method,params,basicAuth); 
    } 
    public JSONObject getJSONFromUrl(String url, int method, String basicAuth){ 
     return getJSONFromUrl(url,method,null,basicAuth); 
    } 
    public JSONObject getJSONFromUrl(String url, int method, ContentValues params, String basicAuth){ 
     Log.e(TAG, "getJSONFromUrl: "); 
     JSONObject json=null; 
     try{ 
      String jsonString=makeServiceCall(url,method,params,basicAuth); 
      if(jsonString!=null){ 
       json=new JSONObject(jsonString); 
      } 
      return json; 
     }catch (JSONException e){ 
      Log.e(TAG, "Error parsing data "+e.toString()); 
      return json; 
     } 
    } 
    public JSONArray getJSONArrayFromUrl(String url, int method, String basicAuth){ 
     return getJSONArrayFromUrl(url,method,null,basicAuth); 
    } 
    public JSONArray getJSONArrayFromUrl(String url, int method, ContentValues params, String basicAuth){ 
     Log.e(TAG, "getJSONArrayFromUrl"); 
     JSONArray jsonArray=null; 
     try{ 
      String jsonString=makeServiceCall(url,method,params,basicAuth); 
      if(jsonString!=null){ 
       Log.e("jsonString",jsonString); 
       jsonArray=new JSONArray(jsonString); 
      } 
      return jsonArray; 
     }catch (JSONException e){ 
      Log.e(TAG, "Error parsing data "+e.toString()); 
      return jsonArray; 
     } 
    } 
    private String makeServiceCall(String address, int method,ContentValues params, String basicAuth) { 
     Log.e(TAG, "makeServiceCall"); 
     String result = null; 
     URL url = null; 
     HttpURLConnection urlConnection = null; 
     OutputStream out; 
     InputStream in; 
     try { 
      address = URLDecoder.decode(address, "UTF-8"); 
      Log.e(TAG, "makeServiceCall: Url: " + address); 
     } catch (Exception e) { 

     } 


      try { 

       url = new URL(address); 

       urlConnection = (HttpURLConnection) url.openConnection(); 
       urlConnection.setConnectTimeout(24000); 
       urlConnection.setReadTimeout(24000); 
       urlConnection.setAllowUserInteraction(false); 
       urlConnection.setInstanceFollowRedirects(true); 

       if (method == POST) { 
        urlConnection.setRequestMethod("POST"); 
        urlConnection.setDoOutput(true); 
        urlConnection.setDoInput(true); 
       } else if (method == GET) { 
        urlConnection.setRequestMethod("GET"); 
       } else if (method == PUT) { 
        urlConnection.setRequestMethod("PUT"); 
        urlConnection.setDoOutput(true); 
       } else if (method == DELETE) { 
        urlConnection.setRequestMethod("DELETE"); 
        urlConnection.setDoOutput(true); 
       } 
       //urlConnection.setRequestProperty("Content-Type","application/x-www-from-urlencoded"); 
       //urlConnection.setRequestProperty("Content-Type","application/from-data"); 
       //urlConnection.setRequestProperty("charset","utf-8"); 
       urlConnection.setRequestProperty("Accept", "application/json"); 
       //urlConnection.setRequestProperty("Accept","text/html"); 

       if (basicAuth != null && basicAuth.length() > 0) { 
        urlConnection.setRequestProperty("Authorization", basicAuth); 
       } 
       if (method != GET) { 
        if (params != null) { 
         StringBuilder postData = new StringBuilder(); 
         for (String key : params.keySet()) { 
          if (postData.length() != 0) postData.append('&'); 
          postData.append(URLEncoder.encode(key, "UTF-8")); 
          postData.append('='); 
          postData.append(URLEncoder.encode(String.valueOf(params.get(key)), "UTF-8")); 
         } 
         byte[] outData = postData.toString().getBytes("UTF-8"); 
         urlConnection.setRequestProperty("Content-Length", Integer.toString(outData.length)); 
         out = new BufferedOutputStream(urlConnection.getOutputStream()); 
         out.write(outData); 
         out.close(); 
        } 
       } 
       urlConnection.connect(); 
       in = new BufferedInputStream(urlConnection.getInputStream()); 
       result = inputStreamToString(in); 
       Log.e(TAG, "ServerResponse" + result); 

      } catch (Exception e) { 
       Log.e("makeServiceCall: ", "Error" + e.toString()); 
       Toast.makeText(context,context.getResources().getString(R.string.please_try_later),Toast.LENGTH_SHORT).show(); 
      } finally { 
       if (urlConnection != null) { 
        urlConnection.disconnect(); 
       } 
      } 


     return result; 
    } 

    /* 
    private HttpClient createHttpClientWithDefaultSocketFactory(Object o, Object o1) { 
    } 
*/ 
    private static String inputStreamToString(InputStream in) { 
     String result=""; 
     if(in==null){ 
      return result; 
     } 
     try{ 
      BufferedReader reader=new BufferedReader(new InputStreamReader(in,"UTF-8")); 
      StringBuilder out=new StringBuilder(); 
      String line; 
      while((line=reader.readLine())!=null){ 
       out.append(line); 
      } 
      result=out.toString(); 
      reader.close(); 
      return result; 
     }catch(Exception e){ 
      Log.e("inputStreamToString: ","Error"+e.toString()); 
      return result; 
     } 

    } 

는,이 문제가 보여진다. 어떤 도움도 정말 고맙겠습니다 ..

+0

Wi-Fi를 사용하지만 모바일 데이터가 아닌 경우 로컬 주소에 연결하려고합니까? 그건 그렇고, 당신이 찾은 대답은 단지 몇 번 다시 연결을 제안, 그래서 당신은 단지 for 루프를 구현해야합니다. – Tyrmos

+0

ERCONNREFUSED는 서버의 포트가 연결을 거부 함을 의미합니다. 어쩌면 속도가 제한되어 연결을 끊을 수 있습니까? – GregP

+0

@Tyrmos 예, for-loop를 구현 했었지만 돌발했습니다. –

답변

0

서버가 응답을 보낼 수 없습니다 : 언급 된 IP 및 포트에서 백엔드가 올바르게 작동하는지 확인하십시오.

+0

백엔드에 대한 정보는 없지만 시간이 초과 된 경우에도 앱은 필요하지 않습니다. 크래쉬, atleast –

관련 문제