2

HttpPOSTを介してjsonデータを取得するためにSpringandroidフレームワークを使用しています。しかし、サービスを利用している間、サーバー側ではパラメーターはnullを受け取ります。

以下はAndroidコードです:

protected String doInBackground(String... params) {
String username = params[0];

String password = params[1];

String url = connectServices.connectLoginServiceURL();// returns url

loginServiceParam = new LinkedMultiValueMap<String, String>();
loginServiceParam.add("username", username);
loginServiceParam.add("password", password); //username and password are null at server end.

HttpHeaders requestHeaders = new HttpHeaders();

requestHeaders.setAccept(Collections.singletonList(new MediaType("application", "json")));
requestHeaders.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(loginServiceParam, requestHeaders);

// Create a new RestTemplate instance
RestTemplate restTemplate = new RestTemplate();

// Add the Gson message converters
restTemplate.getMessageConverters().add(new GsonHttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());

// Make the HTTP POST request, marshaling the response from JSON

ResponseEntity<LoginBean> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, LoginBean.class);

LoginBean loginBeanResponse = responseEntity.getBody();

status = loginBeanResponse.getStatus();

return status;
}

LoginBeanクラスは次のとおりです。

public class LoginBean {

    private String status;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

jsonの応答は次のとおりです。

{"status":"true"}

ありがとう!

4

1 に答える 1

2

私自身がこのクエリを解決しました。次のコードを配置する必要があります

RestTemplate restTemplate = new RestTemplate(true);

POST リクエストには True が必要です。デフォルトでは false で、GET リクエスト用です。これはSpring Android Referenceリンクでも言及されていません

于 2013-02-21T07:35:02.740 に答える