2015-06-16 29 views
9

Aşağıdaki kodu kullanarak Spring MVC denetleyicimde android uygulamasından json verilerini aldım. I sınıfı, aşağıdaki bu json veri bağlama istiyorum Ama Bahar mvc içinde bağlama verileri JS

{"action":"check_login","password":"test","username":"test"} 

olarak

import org.springframework.web.bind.annotation.RequestBody; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.bind.annotation.RequestHeader; 

@RequestMapping(method = RequestMethod.POST, produces = "application/json") 
public @ResponseBody String getMethod(@RequestHeader(value="json") String  
headerStr) { 
System.out.println("POST"); 
System.out.println(headerStr); 
return "hello"; 
} 

System.out.println (headerStr) çıkışıdır. Aşağıdaki benim pom.xml

<dependency> 
<groupId>com.fasterxml.jackson.core</groupId> 
<artifactId>jackson-databind</artifactId> 
<version>2.5.1</version> 
</dependency> 

yılında

public class LoginRequest { 
private String action; 
private String username; 
private String password; 

public String getAction() { 
return action; 
} 

public void setAction(String action) { 
this.action = action; 
} 

public String getUsername() { 
return username; 
} 

public void setUsername(String username) { 
this.username = username; 
} 

public String getPassword() { 
return password; 
} 

public void setPassword(String password) { 
this.password = password; 
} 

bu sorunu çözmek için nasıl android kod

HttpParams httpParams = new BasicHttpParams(); 
    HttpConnectionParams.setConnectionTimeout(httpParams, 5000); 
    HttpConnectionParams.setSoTimeout(httpParams, 5000); 
    HttpClient httpclient = new DefaultHttpClient(httpParams); 
    HttpPost httppost = new HttpPost("http://localhost:8080/datarequest"); 
    JSONObject json = new JSONObject(); 


     json.put("action", "check_login"); 
     json.put("username","name"); 
     json.put("password", "password"); 


    JSONArray postjson = new JSONArray(); 
    postjson.put(json); 

    httppost.setHeader("json", json.toString()); 
    httppost.getParams().setParameter("jsonpost", postjson); 

    System.out.println(postjson); 
    HttpResponse response = httpclient.execute(httppost); 

mı?

cevap

1

Kullanım Jackson ObjectMapper: tuşları özelliği eşleşecek nerede

ObjectMapper mapper = new ObjectMapper(); 
LoginRequest login = mapper.readValue(headerStr, LoginRequest.class); 
+0

Teşekkür o @Stefan Lindenberg –

9

Sen

public @ResponseBody String getMethod(@RequestBody LoginRequest loginRequest) 

için LoginRequest sınıf örneği ve json değerine bağlı olacaktır bu şekilde sizin yönteminde argümanları değiştirmelidir

Ayrıca, jsonu vücudun bir parçası olarak gönderdiğinizden emin olun, aşağıdaki

ekleyin HttpResponse response = httpclient.execute(httppost); satırdan önce
StringEntity se = new StringEntity(json.toString(), "UTF8"); 
se.setHeader("Content-type", "application/json"); 
post.setEntity(se); 

+1

orada olup da emin Jackson dependeny yapmak gerekiyor çalışır http://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind /2.5.4 –

+0

istemci kodunu ekleyin, bir istek göndermek istediğiniz bölüm –

+0

ben yukarıdaki kodumu güncelledi ama yine de çıkış alamıyor ??? @Master Slave –