话不多说,直接贴代码,照写就好了
服务端接口编写,我用的是springmvc,服务端接口其实和平时web开发一样,就是返回出json就好了,还有就是接受数据也是json,方法如下:
@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 通达信 数据接口 c,response;
通达信 数据接口 c,response = httpclient.execute(httppost);
//检验状态码,如果成功接收数据
int code = 通达信 数据接口 c,response.getStatusLine().getStatusCode();
System.out.println(code+'code');
if (code == 200) {
String rev = EntityUtils.toString(通达信 数据接口 c,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 通达信 数据接口 c,response;
通达信 数据接口 c,response = httpclient.execute(httppost);
//检验状态码,如果成功接收数据
int code = 通达信 数据接口 c,response.getStatusLine().getStatusCode();
System.out.println(code+'code');
if (code == 200) {
String rev = EntityUtils.toString(通达信 数据接口 c,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();
}
}
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点