2013-06-25 2 views
0

원격 서버에 http 요청을 보내는 앱이 있습니다. 이건 정말 잘 어울리는모든 네트워크 트래픽을 프록시를 통해 전달하는 방법은 무엇입니까?

HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost("myURL"); 

    try { 

     ArrayList<BasicNameValuePair> postVariables = new ArrayList<BasicNameValuePair>(2); 
     postVariables.add(new BasicNameValuePair("key","value")); 

     httpPost.setEntity(new UrlEncodedFormEntity(postVariables)); 
     HttpResponse response = httpClient.execute(httpPost); 
     String responseString = EntityUtils.toString(response.getEntity()); 

     if (responseString.contains("\"success\":true")){ 
      //this means the request succeeded 
     } else { 
      //failed 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

, 그러나 우리의 고객 중 하나는 특정 프록시 서버를 통해 이동 요청을 필요로하는 APN을 설정 한 : 나는 다음과 같은 코드를 사용하여이 작업을 수행. 나는이 작품 요청에 다음을 추가하면, 요청이 서버에 프록시를 통해 라우팅됩니다 :

HttpHost httpHost = new HttpHost("proxyURL",8080); 
    httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, httpHost); 

지금까지, 그러나, 나뿐만 아니라 일부 HTTP 요청을 만드는 라이브러리를 너무 잘 사용합니다. 라이브러리의 코드는 나에게 접근 할 수 없으므로이 두 행을 코드에 추가 할 수 없습니다. 그 도서관의 제작자에게 연락을하고, 모든 요청이 자동으로 프록시를 통과하도록 안드로이드 환경을 설정하는 것이 가능해야한다고 말했습니다. 그런 것이 있습니까? 나는 google에 아무것도를 발견하지 않았다.
기본적으로 위의 두 줄을 모든 http 요청의 표준으로 설정하는 방법을 찾고 있습니다. APN은 프록시를 전체 전화의 기본값으로 설정하지 않으므로 앱에서 수동으로해야합니다 (그렇다는 것은 대부분의 앱이 해당 고객의 전화에서 작동하지 않음을 의미합니다).

답변

1


그것은 년 내가 그것을 사용하는 데 필요한 한 이후 두 있었다,하지만 내가 정확히 기억한다면, 당신은 행 노선의 응용 프로그램의 모든 HTTP 트래픽을 통해 수있는 환경 전체 설정을 설정하기 위해 System.setProperty(String, String)을 사용할 수 있습니다 프록시. 설정해야하는 속성은 "http.proxyHost"및 "http.proxyPort"이며 VM이 라우팅 요청을 처리하기 때문에 일반적으로 프록시를 지정하지 않고 HttpClient를 사용합니다.
내가 말하는 내용에 대한 문서는 여기에서 찾을 수 있습니다. 및 here 실제 내용은 System.setProperty(String, String) 기능에 대한 문서입니다.
그래도 해결되지 않으면 알려주세요. 내 오래된 코드는 시스템 수준의 프록시를 설정합니다. BTW는 각 앱이 자체 Dalvik에서 실행되기 때문에 실제로는 "시스템 수준"일 뿐이므로 다른 앱의 네트워크 통신에는 영향을 미치지 않습니다.

+0

감사합니다. 나는 그것을 살펴볼 것입니다. 실제로 내가 필요한 것일 것입니다. 나는 다른 응용 프로그램에 영향을 미치고 싶지 않습니다 :). – Kevin

+0

아직 테스트 할 수 없지만 제안 사항을 읽었을 때 올바른 방법이라고 생각합니다. 답변으로 표시됩니다. 감사합니다. – Kevin

관련 문제