http 전송 json 서버 인터페이스 와 클 라 이언 트 연결 및 restful 구현

말 이 많 지 않 으 니, 직접 코드 를 붙 이 고, 그대로 쓰 면 된다.
서버 인 터 페 이 스 를 작 성 했 습 니 다. 저 는 springmvc 를 사 용 했 습 니 다. 서버 인 터 페 이 스 는 사실 평소 웹 개발 과 마찬가지 로 제 이 슨 으로 돌아 가면 됩 니 다. 그리고 데 이 터 를 받 아들 이 는 것 도 제 이 슨 입 니 다. 방법 은 다음 과 같 습 니 다.
@Controller
@RequestMapping("/user")
public class UserController {
	
	@Autowired
	private UserService userservice;
	@RequestMapping("/getUserByName")
	public @ResponseBody User getUserByName(HttpServletRequest request) throws IOException{
		StringBuffer str = new StringBuffer(); 
		try {
			   BufferedInputStream in = new BufferedInputStream(request.getInputStream());
			      int i;
			      char c;
			      while ((i=in.read())!=-1) {
			      c=(char)i;
			      str.append(c);
			      }
			     }catch (Exception ex) {
			   ex.printStackTrace();
			   }
        JSONObject obj= JSONObject.fromObject(str.toString());
        System.out.println(obj.get("name"));
		User user= userservice.getUserByName(obj.get("name").toString());
		return user;
	}
	
}
서버 를 통 해 클 라 이언 트 json {"name": "cwh"} 이름 name 을 조회 하고 클 라 이언 트 에 게 json 을 되 돌려 주 는 것 을 실현 합 니 다.
클 라 이언 트 구현 은 다음 과 같 습 니 다.
import java.io.IOException;

import net.sf.json.JSONObject;
import net.spring.model.User;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.junit.Test;

public class Client {
	@Test
	public void HttpPostData() {  
	      try { 
	          HttpClient httpclient = new DefaultHttpClient();  
	          String uri = "http://localhost:8080/springMVC/user/getUserByName"; 
	          HttpPost httppost = new HttpPost(uri);   
	          //  http    
	          httppost.addHeader("Authorization", "your token"); //  token 
	          httppost.addHeader("Content-Type", "application/json"); 
	          httppost.addHeader("User-Agent", "imgfornote");  
	          JSONObject obj = new JSONObject();
	          obj.put("name", "cwh"); 
	          httppost.setEntity(new StringEntity(obj.toString()));     
	          HttpResponse response;  
	          response = httpclient.execute(httppost);  
	          //     ,          
	          int code = response.getStatusLine().getStatusCode();  
	          System.out.println(code+"code");
	          if (code == 200) {  
	              String rev = EntityUtils.toString(response.getEntity());//  json  : {"id": "","name": ""}         
	              obj= JSONObject.fromObject(rev);
	          
	              User user = (User)JSONObject.toBean(obj,User.class);
	              System.out.println("    ==="+user.toString());
	          } 
	          } catch (ClientProtocolException e) { 
	        	  e.printStackTrace();
	          } catch (IOException e) {  
	        	  e.printStackTrace();
	          } catch (Exception e) { 
	        	  e.printStackTrace();
	          } 
	     }
}
ok, 서버 를 tomcat 에 배치 합 니 다.
실행 클 라 이언 트: 데이터 반환 성공

물론 RESTFUL 스타일 로 도 가능 합 니 다.
서버 에서 이렇게 작성 할 수 있 습 니 다:
@RequestMapping("/getUserByName/{name}")
	public @ResponseBody User getUserByName(@PathVariable("name")String name) throws IOException{
		User user= userservice.getUserByName(name);
		return user;
	}
그러면 클 라 이언 트 요청 은 이렇게 썼 습 니 다.
public void HttpPostData() {  
	      try { 
	          HttpClient httpclient = new DefaultHttpClient();  
	          String uri = "http://localhost:8080/springMVC/user/getUserByName/cwh"; 
	          HttpPost httppost = new HttpPost(uri);   
	          JSONObject obj = new JSONObject();
	          
	          HttpResponse response;  
	          response = httpclient.execute(httppost);  
	          //     ,          
	          int code = response.getStatusLine().getStatusCode();  
	          System.out.println(code+"code");
	          if (code == 200) {  
	              String rev = EntityUtils.toString(response.getEntity());//  json  : {"id": "","name": ""}         
	              obj= JSONObject.fromObject(rev);
	              User user = (User)JSONObject.toBean(obj,User.class);
	              System.out.println("    ==="+user.toString());
	          } 
	          } catch (ClientProtocolException e) { 
	        	  e.printStackTrace();
	          } catch (IOException e) {  
	        	  e.printStackTrace();
	          } catch (Exception e) { 
	        	  e.printStackTrace();
	          } 
	     }

그래도 돼 요.

좋은 웹페이지 즐겨찾기