2013-03-07 3 views
4

android에서 apache.http를 사용하고 있는데 대부분 잘 작동하지만 매개 변수가있는 요청을 가져 오려고하면 전송되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 여기에 단지 어떤이는HttpGet 매개 변수가 전송되지 않습니다.

GET /api/v1/activity/ HTTP/1.1 
Host: example.com 
Connection: Keep-Alive 
Accept-Encoding: gzip 
Accept: application/json, text/javascript, */*; q=0.01 

어떤 아이디어를 PARAMS 받고 서버 메신저에 코드

HttpClient httpclient = new DefaultHttpClient(); 
HttpUriRequest request = new HttpGet(uri); 

HttpParams p = new BasicHttpParams(); 
p.setParameter("param", "value"); 
request.setParams(p); 

request.setHeader("Accept", "application/json, text/javascript, */*; q=0.01"); 

HttpResponse response = null; 

try { 
    response = httpclient.execute(request); 
} catch (ClientProtocolException e) { 
    e.printStackTrace(); 
} 

이야?

답변

3

당신과 같이, URI를 수정해야합니다 : 이것은 잘 작동하고 내가 지금 그것을 사용하지만, 그렇지 않으면 setParams 방법은 트릭을해야 규약에 따라거야

HttpClient httpclient = new DefaultHttpClient(); 

String url = "http://example.com"; 
List<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair("param", "value")); 
URI uri = new URI(url + "?" + URLEncodedUtils.format(params, "utf-8"); 

HttpUriRequest request = new HttpGet(uri); 

request.setHeader("Accept", "application/json, text/javascript, */*; q=0.01"); 

HttpResponse response = null; 

try { 
    response = httpclient.execute(request); 
} catch (ClientProtocolException e) { 
    e.printStackTrace(); 
} 
+0

. 이상합니다. – manuel

+0

필자는 그렇게해야하지만,'setParams()'를 사용하는 예제는 본 적이 없다. Apache의 공식 예제조차도 URIBuilder의 setParameter 메소드를 사용하여 URI에서 params를 빌드합니다. – 323go

관련 문제