2012-03-30 4 views
2

나는 (나에 의해 구현되지 않은) 서버에서 일부 메서드를 사용하려는 안드로이드 애플 리케이션을 구현하고있다.Android - String이 아닌 매개 변수로 Http-Post를 만들 수 있습니까?

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 

nameValuePairs.add(new BasicNameValuePair("user[email]", email)); 
nameValuePairs.add(new BasicNameValuePair("user[password]", password)); 

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

ResponseHandler<String> responseHandler=new BasicResponseHandler(); 
String responseBody = httpclient.execute(httppost, responseHandler); 
JSONObject response=new JSONObject(responseBody); 
System.out.println("RESPONSE " + response.toString()); 

은 내가 쉽게 속성을하는 데 사용할 수있는 JSON 객체로 응답을 얻을 : 내가 통과해야하는 HTTP 포스트를 만들려고 이제 경우에만 문자열 모두가 같은 코드로 잘 작동 매개 변수 나는 원한다.

이제 String 이외의 값 (정수 또는 부울)을 매개 변수로 사용해야하는 메소드가 있습니다. 이 인수는 List<NameValuePair>과 같은 목록에 전달할 수 없으므로 여기에는 String 만 사용됩니다. json 객체로도 전달하려고했으나 성공하지 못했습니다.

그래서 http 포스트에 String 이외의 매개 변수를 사용할 수 있다면 첫 번째 질문은 무엇입니까? 그리고 그렇다면 어떻게해야합니까? 예를 들어 전자 메일 위의 코드에서 정수와 암호가 부울이면 (예제를 보시면) 어떻게 처리해야합니까?

미리 감사드립니다.

+0

그냥 문자열 표현을 전달합니까? –

+0

1의 경우 "1"을 의미합니까? 그러나 서버는 내가 생각하는 정수를 기다린다. 그래서 나는 이것 때문에 생각하는 입출력 예외가 발생했습니다. 거기에 어떤 방법으로 비 문자열이나 http-post를 전달할 수 없습니까? – george

+0

사용하려는 서버 리소스에 게시 된 작동중인 웹 페이지가 있습니까? 그렇다면 Firefox 용 HttpFox 플러그인이나 다른 트래픽 스니퍼와 같은 것을 사용하여 성공적인 HTTP 요청이 어떻게 보이는지보고 형식을 모방 할 수 있습니까? –

답변

0

확실히 파일 업로드를 고려하십시오.

파일은

기술을 (사람이 충분히 바이너리 수없는 텍스트를 고려하는 경우 확인, 사진을 업로드 고려)

+0

네, 그 생각은 ..하지만 모든 것이 문자열로 전송되고 서버에서 디코딩 된 것인지 모르겠습니다. 그렇다면 어떻게 문자열이 아닌 매개 변수를 전달해야합니까? – george

+1

이 링크는 매우 유용합니다. 그러나, URL 연결을 사용하여 http://stackoverflow.com/questions/2793150/how-to-use-java-net-urlconnection-to-fire-and-handle-http-requests를 전달합니다. –

+0

api 및 계약서를 알고 있어야합니다 당신이지고/게시하는 리소스에 대한. – Shellum

0

모든 HTTP 요청 매개 변수가 문자열로 올 것이다 HTTP 포스트 진입니다 , 그러나 서버 측 코드가 변환 할 수 있습니다. 예를 들어 서버는 요청 매개 변수에서 JSON 문자열을 가져 와서 직렬화 된 데이터의 양을 포함하는 객체로 변환 할 수 있습니다. 정수, 목록 등을 포함 할 수 있습니다.

구현은 해당 서버 측 코드에 따라 달라 지지만 예를 들어 클라이언트와 서버 모두 GSON을 사용하여 객체와 목록을 앞뒤로 보낼 수 있습니다.

public void doPost(...) 
{ 
    String param = request.getParameter("someParam"); 
    MyCustomObject myCustomObject = (MyCustomObject)gson.fromJson(param, MyCustomObject.class); 
} 
+0

이 코드에서는 서버에서 문자열로 요청한 매개 변수를 가져온 다음 원하는 다른 유형으로 구성합니다. 그 후 서버로 전달하는 방법은 무엇입니까? 나는 혼란 스럽다. – george

+0

"모든 HTTP 요청 매개 변수가 문자열로 올 것"이다. url 매개 변수 만 "문자열"이됩니다. –

+0

위의 예에서와 같이 request.getParameter를 통해 액세스 할 수있는 모든 요청 매개 변수는 문자열 (http://docs.oracle)로 제공됩니다.com/javaee/6/api/javax/servlet/ServletRequest.html – Shellum

관련 문제