2013-11-28 5 views
0

Spring 4.0 REST API를 사용하여 웹 서비스를 만들고 있는데, Android HttpClient 코드를 따르고 있지만 서버에서 404 오류가 발생했습니다. 다음 Android HttpClient에서 작동 할 가장 적합한 Spring 컨트롤러 코드가 필요합니다.StringEntity 용 Spring REST 컨트롤러

다음과 같이 하나의 방법이있다
void call() { 
     HttpClient client = new DefaultHttpClient(); 
     HttpPost post = new HttpPost("http://192.168.0.15:8080/locate/register"); 
     post.setHeader("Content-type", "application/json"); 
     post.setHeader("Accept", "application/json"); 
     JSONObject obj = new JSONObject(); 
     obj.put("userId", "1111"); 
     obj.put("mobileNumber", "1111111"); 
      obj.put("userName", "abc"); 
      obj.put("password", "abc"); 
      obj.put("email", "[email protected]"); 
      obj.put("meiNumber", "876535354"); 
      post.setEntity(new StringEntity(obj.toString(), "UTF-8")); 
     HttpResponse response = client.execute(post); 
    } 

현재 내가 쓴 봄 컨트롤러, 나는 ... 단지, 또한 방법에 따라 내 안드로이드 클라이언트 코드가 작동하지 않는 이유를 설명

을 JSON에 동일한 개체 또는 아무것도를 반환하려면
@RequestMapping(method = RequestMethod.POST, value = "/register", headers = "Accept=application/json") 
    public @ResponseBody UserRegistration registerUser(@RequestBody UserRegistration user) { 
       // my business logic 
       return user; 
    } 

나는 pastin입니다. g UserRegistration 모델은 여기

public class UserRegistration implements Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    private long userId; 
    private String mobileNumber; 
    private String userName; 
    private String password; 
    private String email; 
    private String imeiNumber; 

    private Date registrationDate; 


    public long getUserId() { 
     return userId; 
    } 

    public void setUserId(long userId) { 
     this.userId = userId; 
    } 


    public String getMobileNumber() { 
     return mobileNumber; 
    } 

    public void setMobileNumber(String mobileNumber) { 
     this.mobileNumber = mobileNumber; 
    } 


    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; 
    } 


    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 


    public String getImeiNumber() { 
     return imeiNumber; 
    } 

    public void setImeiNumber(String imeiNumber) { 
     this.imeiNumber = imeiNumber; 
    } 

    public Date getRegistrationDate() { 
     return registrationDate; 
    } 

    public void setRegistrationDate(Date registrationDate) { 
     this.registrationDate = registrationDate; 
    } 
} 

이 문제를 해결하기 위해 좀 도와주세요 ..

+0

잘 모르겠어요 당신이 안드로이드에서 "http : // localhost : 8080"을 호출 할 수 있습니다. "http://jelastic.com/"(무료 계획이 있음)에 웹 서비스를 넣어보십시오. Pls는 logcat를 추가합니다. –

+0

@Haris 예, 안드로이드 클라이언트에서 네트워크를 사용 중입니다. 또한 IP도 동일한 오류가 발생합니다. – Ani

답변

0

당신은 안드로이드에 StringEntity, 그 이름이 "데이터"와 매개 변수에 추가됩니다를 사용하는 경우. 당신은 너무 같은 컨버터를 추가해야 할 수도 있습니다

@RequestMapping(method = RequestMethod.POST, value = "/register", headers = "Accept=application/json") 
    public @ResponseBody UserRegistration registerUser(@RequestParam(value = "data") UserRegistration user) { 
       // my business logic 
       return user; 
    } 

: 그래서 당신이 필요로하는 것은 같은 것입니다

public class StringToUserRegistrationConverter implements Converter<String, UserRegistration> { 
    Logger log = Logger.getLogger("StringToUserRegistrationConverter"); 

    @Override 
    public UserRegistration convert(String source) { 
     ObjectMapper objectMapper = new ObjectMapper(); 
     try { 
      return objectMapper.readValue(source, UserRegistration.class); 
     } catch (IOException e) { 
      log.log(Level.SEVERE, "Couldn't convert", e); 
     } 
     return null; 
    } 
} 

는 및 변환기 등록 :

<bean id="conversionService" 
     class="org.springframework.context.support.ConversionServiceFactoryBean"> 
    <property name="converters"> 
     <set> 
      <bean class="com.example.spring.converter.StringToUserRegistrationConverter"/> 
     </set> 
    </property> 
    </bean> 
관련 문제