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();
}
}
그래도 돼 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콘텐츠 SaaS | JSON 스키마 양식 빌더Bloomreach Content를 위한 JSON Form Builder 맞춤형 통합을 개발합니다. 최근 Bloomreach Content SaaS는 내장 앱 프레임워크를 사용하여 혁신적인 콘텐츠 유형 필드를 구축할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.