Android:Não é possível fazer httprequest atrás do firewall
-
23-09-2019 - |
Pergunta
O getUrlContent padrão funciona bem quando não há firewall.Mas tenho exceções quando tento fazer isso atrás de um firewall.
Tentei definir "servidor proxy http" no gerenciador AVD, mas não funcionou.Alguma ideia de como configurá-lo corretamente?
e aliás:A partir da documentação do Android "Você pode usar a opção -verbose -proxy para diagnosticar problemas de conexão com proxy". -verbose-proxy não é uma opção válida.
protected static synchronized String getUrlContent(String url) throws ApiException {
if(url.equals("try")){
return "thanks";
}
if (sUserAgent == null) {
throw new ApiException("User-Agent string must be prepared");
}
// Create client and set our specific user-agent string
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
request.setHeader("User-Agent", sUserAgent);
try {
HttpResponse response = client.execute(request);
// Check if server response is valid
StatusLine status = response.getStatusLine();
if (status.getStatusCode() != HTTP_STATUS_OK) {
throw new ApiException("Invalid response from server: " +
status.toString());
}
// Pull content stream from response
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
ByteArrayOutputStream content = new ByteArrayOutputStream();
// Read response into a buffered stream
int readBytes = 0;
while ((readBytes = inputStream.read(sBuffer)) != -1) {
content.write(sBuffer, 0, readBytes);
}
// Return result from buffered stream
return new String(content.toByteArray());
} catch (IOException e) {
throw new ApiException("Problem communicating with API", e);
}
}
Solução
Veja se esse pequeno animal irá ajudá -lo. Pode ser que você precise disso na imagem do emulador que está executando.
http://openhandsetmagazine.com/2007/11/tips-howto-connect-android-emulator-behind-proxy/
Outras dicas
Você também pode definir proxy em seu código.
public void setProxy(DefaultHttpClient httpclient) {
final String PROXY_IP = "<insert your IP here>";
final int PROXY_PORT = <insert_PROXY_PORT#>;
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(PROXY_IP, PROXY_PORT),
new UsernamePasswordCredentials(
"username", "password"));
HttpHost proxy = new HttpHost(PROXY_IP, PROXY_PORT);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
proxy);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow