2015-01-12 2 views
0

안드로이드 앱의 백엔드에서 RESTful 웹 서비스를 구현하고있다. REST와 웹 서비스에 익숙하지 않아서 백엔드 REST 웹 서비스에 POST 요청을 수행하는 데 도움이된다.안드로이드 클라이언트에서 REST 웹 서비스 호출하기

안드로이드 클라이언트에서 다음과 같은 코드를 사용하여 AsyncTask의 코드를 사용하여 POST 요청에 대한 RESTful 웹 서비스를 호출 할 수 있습니까?

그렇지 않은 경우 나에게 대안을 제안하십시오. 샘플 코드와 리소스에 대한 링크는 모두 만족합니다 !! 사전 에서 덕분에 ...

package com.javacodegeeks.enterprise.rest.jersey.jerseyclient; 

    import com.javacodegeeks.enterprise.rest.jersey.Student; 
    import com.sun.jersey.api.client.Client; 
    import com.sun.jersey.api.client.ClientResponse; 
    import com.sun.jersey.api.client.WebResource; 
    import com.sun.jersey.api.client.config.ClientConfig; 
    import com.sun.jersey.api.client.config.DefaultClientConfig; 
    import com.sun.jersey.api.json.JSONConfiguration; 

    public class JerseyClient { 

     public static void main(String[] args) { 
      try { 

       Student st = new Student("Adriana", "Barrer", 12, 9); 

       ClientConfig clientConfig = new DefaultClientConfig(); 

       clientConfig.getFeatures().put(
         JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE); 

       Client client = Client.create(clientConfig); 

       WebResource webResource = client 
         .resource("http://localhost:9090/JerseyJSONExample/rest/jsonServices/send"); 

       ClientResponse response = webResource.accept("application/json") 
         .type("application/json").post(ClientResponse.class, st); 

       if (response.getStatus() != 200) { 
        throw new RuntimeException("Failed : HTTP error code : " 
          + response.getStatus()); 
       } 

       String output = response.getEntity(String.class); 

       System.out.println("Server response .... \n"); 
       System.out.println(output); 

      } catch (Exception e) { 

       e.printStackTrace(); 

      } 

     } 

    } 

답변

0

나는 그것이 작동하는지 확신하지 코드를 테스트하지 않았습니다. 그러나이 일을 내 방식이, 당신은 그것을 시도 할 수 있습니다 :

private String sendPostRequest(String payload, String url) { 
    StringEntity en = new StringEntity(payload); 
    HttpPost request = new HttpPost(url); 
    request.setHeader("Content-Type", "application/json"); 
    request.setEntity(en); 

    HttpResponse httpResponse = httpClient.execute(request); 
    HttpEntity entity = httpResponse.getEntity(); 
    BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 
    InputStream inputStream = bufHttpEntity.getContent(); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 
    String line; 
    String response = ""; 
    StringBuilder stringBuilder = new StringBuilder(); 
    while ((line = reader.readLine()) != null) { 
     stringBuilder.append(line); 
    } 
    inputStream.close(); 
    response = stringBuilder.toString(); 
    return response; 
} 
0

retrofit library을 확인, 그것은 모바일 REST 클라이언트에 적합합니다. 여기에 그것을 사용하는 방법은 다음과 같습니다 먼저 다음과 같이 엔드 포인트를 선언

public interface RestClient { 
    @POST("/post.php") 
    void postStudent(
      @Field("firstname") String firstname, 
      @Field("lastname") String lastname, 
      @Field("birthday") String birthday, 
      Callback<Response> callback); 
} 

는 다음과 상호 작용에 사용할 클라이언트 endpoit을 만들려면 백업 :

RestAdapter restAdapter = new RestAdapter.Builder() 
      .setEndpoint("http://your_server_address/") 
      .setRequestInterceptor(requestInterceptor).build(); 
RestClient client = restAdapter.create(RestClient.class); 
관련 문제