java.io.IOException使用Restful Web Service

时间:2016-03-28 14:44:44

标签: spring web-services

我的项目有一个奇怪的问题。当我在main method中运行Client以在发送到User后创建Server时,会发生fllowing错误:

  

线程“main”中的异常java.io.IOException:服务器返回HTTP   响应代码:400为URL:http://localhost:8080/rest/user/create at   sun.net.www.protocol.http.HttpURLConnection.getInputStream0(未知   来源)at   sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知   来源)at   edu.java.spring.service.client.RestClientTest.createUser(RestClientTest.java:72)     在   edu.java.spring.service.client.RestClientTest.main(RestClientTest.java:30)

此处归档RestClientTest.java

public class RestClientTest {
    public static void main(String[] args) throws IOException{
//      System.out.println("Rest Response" + loadUser("quypham"));
        User user = new User();
        user.setUserName("datpham");
        user.setPassWord("12345");
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR,1960);
        user.setBirthDay(calendar.getTime());
        user.setAge(12);
        createUser(user);
        System.out.println("Rest Response" + loadUser("datpham"));
    }
    public static String createUser(User user) throws IOException{

        URL url = new URL("http://localhost:8080/rest/user/create");
        HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
        httpConnection.setRequestMethod("POST");
        httpConnection.addRequestProperty("Content-Type","application/json");
        httpConnection.addRequestProperty("Accept","application/json");
        httpConnection.setDoOutput(true);

        DataOutputStream wr = new DataOutputStream(httpConnection.getOutputStream());

        ObjectMapper mapper = new ObjectMapper();
        StringWriter writer = new StringWriter();
        mapper.writeValue(writer,user);
        wr.writeBytes(writer.getBuffer().toString());
        wr.flush();
        wr.close();
        return readInputStream(httpConnection.getInputStream());


    }
    public static String readInputStream(InputStream stream) throws IOException{
        StringWriter writer = new StringWriter();
        try {
            int read;
            byte[] bytes = new byte[4*1024];
            while ((read = stream.read(bytes))!=-1) {
                writer.write(new String(bytes,0,read));


            }
        } finally {
            // TODO: handle finally clause
            stream.close();
            writer.close();
        }
        return writer.getBuffer().toString();

    }

此处归档UserRestServiceController.java

@Controller
public class UserRestServiceController {
    @Autowired
    public  UserDao userDao;
    @RequestMapping(value = "/rest/user/create",method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseStatus(HttpStatus.CREATED)
    public void addUser(@RequestBody User user){
        userDao.save(user);
    }

0 个答案:

没有答案