由于在实际项目中碰到的restful服务,参数都以json为准。这里我获取的接口和传入的参数都是json字符串类型。发布restful服务可参照文章http://www.cnblogs.com/jave1ove/p/7277861.html,以下接口调用基于此服务。

基于发布的Restful服务,下面总结几种常用的调用方法。

(1)Jersey API

package com.restful.client;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.restful.entity.PersonEntity;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource; import javax.ws.rs.core.MediaType; /**
* Created by XuHui on 2017/8/7.
*/
public class JerseyClient {
private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService";
public static void main(String[] args) throws Exception {
getRandomResource();
addResource();
getAllResource();
} public static void getRandomResource() {
Client client = Client.create();
WebResource webResource = client.resource(REST_API + "/getRandomResource");
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).accept("application/json").get(ClientResponse.class);
String str = response.getEntity(String.class);
System.out.print("getRandomResource result is : " + str + "\n");
} public static void addResource() throws JsonProcessingException {
Client client = Client.create();
WebResource webResource = client.resource(REST_API + "/addResource/person");
ObjectMapper mapper = new ObjectMapper();
PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, mapper.writeValueAsString(entity));
System.out.print("addResource result is : " + response.getEntity(String.class) + "\n");
} public static void getAllResource() {
Client client = Client.create();
WebResource webResource = client.resource(REST_API + "/getAllResource");
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).accept("application/json").get(ClientResponse.class);
String str = response.getEntity(String.class);
System.out.print("getAllResource result is : " + str + "\n");
}
}

结果:

getRandomResource result is : {"id":"NO1","name":"Joker","addr":"http:///"}
addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}
getAllResource result is : [{"id":"NO2","name":"Joker","addr":"http://"}]

(2)HttpURLConnection

package com.restful.client;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.restful.entity.PersonEntity; import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL; /**
* Created by XuHui on 2017/8/7.
*/
public class HttpURLClient {
private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService"; public static void main(String[] args) throws Exception {
addResource();
getAllResource();
} public static void addResource() throws Exception {
ObjectMapper mapper = new ObjectMapper();
URL url = new URL(REST_API + "/addResource/person");
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Accept", "application/json");
httpURLConnection.setRequestProperty("Content-Type", "application/json");
PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");
OutputStream outputStream = httpURLConnection.getOutputStream();
outputStream.write(mapper.writeValueAsBytes(entity));
outputStream.flush(); BufferedReader reader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
String output;
System.out.print("addResource result is : ");
while ((output = reader.readLine()) != null) {
System.out.print(output);
}
System.out.print("\n");
} public static void getAllResource() throws Exception {
URL url = new URL(REST_API + "/getAllResource");
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setRequestProperty("Accept", "application/json");
BufferedReader reader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
String output;
System.out.print("getAllResource result is :");
while ((output = reader.readLine()) != null) {
System.out.print(output);
}
System.out.print("\n");
} }

结果:

addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}
getAllResource result is :[{"id":"NO2","name":"Joker","addr":"http://"}]

(3)HttpClient

package com.restful.client;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.restful.entity.PersonEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
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; /**
* Created by XuHui on 2017/8/7.
*/
public class RestfulHttpClient {
private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService"; public static void main(String[] args) throws Exception {
addResource();
getAllResource();
} public static void addResource() throws Exception {
HttpClient httpClient = new DefaultHttpClient();
PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");
ObjectMapper mapper = new ObjectMapper(); HttpPost request = new HttpPost(REST_API + "/addResource/person");
request.setHeader("Content-Type", "application/json");
request.setHeader("Accept", "application/json");
StringEntity requestJson = new StringEntity(mapper.writeValueAsString(entity), "utf-8");
requestJson.setContentType("application/json");
request.setEntity(requestJson);
HttpResponse response = httpClient.execute(request);
String json = EntityUtils.toString(response.getEntity());
System.out.print("addResource result is : " + json + "\n");
} public static void getAllResource() throws Exception {
HttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(REST_API + "/getAllResource");
request.setHeader("Content-Type", "application/json");
request.setHeader("Accept", "application/json");
HttpResponse response = httpClient.execute(request);
String json = EntityUtils.toString(response.getEntity());
System.out.print("getAllResource result is : " + json + "\n");
}
}

结果:

addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}
getAllResource result is : [{"id":"NO2","name":"Joker","addr":"http://"}]

maven:

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.1.2</version>
</dependency>

(4)JAX-RS API

package com.restful.client;

import com.restful.entity.PersonEntity;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException; /**
* Created by XuHui on 2017/7/27.
*/
public class RestfulClient {
private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService";
public static void main(String[] args) throws Exception {
getRandomResource();
addResource();
getAllResource();
} public static void getRandomResource() throws IOException {
Client client = ClientBuilder.newClient();
client.property("Content-Type","xml");
Response response = client.target(REST_API + "/getRandomResource").request().get();
String str = response.readEntity(String.class);
System.out.print("getRandomResource result is : " + str + "\n");
} public static void addResource() {
Client client = ClientBuilder.newClient();
PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");
Response response = client.target(REST_API + "/addResource/person").request().buildPost(Entity.entity(entity, MediaType.APPLICATION_JSON)).invoke();
String str = response.readEntity(String.class);
System.out.print("addResource result is : " + str + "\n");
} public static void getAllResource() throws IOException {
Client client = ClientBuilder.newClient();
client.property("Content-Type","xml");
Response response = client.target(REST_API + "/getAllResource").request().get();
String str = response.readEntity(String.class);
System.out.print("getAllResource result is : " + str + "\n"); }
}

结果:

getRandomResource result is : {"id":"NO1","name":"Joker","addr":"http:///"}
addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}
getAllResource result is : [{"id":"NO2","name":"Joker","addr":"http://"}]

(5)webClient

package com.restful.client;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.restful.entity.PersonEntity;
import org.apache.cxf.jaxrs.client.WebClient; import javax.ws.rs.core.Response; /**
* Created by XuHui on 2017/8/7.
*/
public class RestfulWebClient {
private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService";
public static void main(String[] args) throws Exception {
addResource();
getAllResource();
} public static void addResource() throws Exception {
ObjectMapper mapper = new ObjectMapper();
WebClient client = WebClient.create(REST_API)
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.encoding("UTF-8")
.acceptEncoding("UTF-8");
PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");
Response response = client.path("/addResource/person").post(mapper.writeValueAsString(entity), Response.class);
String json = response.readEntity(String.class);
System.out.print("addResource result is : " + json + "\n");
} public static void getAllResource() {
WebClient client = WebClient.create(REST_API)
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.encoding("UTF-8")
.acceptEncoding("UTF-8");
Response response = client.path("/getAllResource").get();
String json = response.readEntity(String.class);
System.out.print("getAllResource result is : " + json + "\n");
}
}

结果:

addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}
getAllResource result is : [{"id":"NO2","name":"Joker","addr":"http://"}

maven:

<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle-jaxrs</artifactId>
<version>2.7.0</version>
</dependency>

注:该jar包引入和jersey包引入有冲突,不能在一个工程中同时引用。

Restful接口调用方法超详细总结的更多相关文章

  1. 原生sql实现restful接口调用

    index.php <?php include './Request.php';include './Response.php';//获取数据$data=Request::getRequest( ...

  2. Yii框架实现restful 接口调用,增删改查

    创建模块modules; 在main.php中配置文件:(1) (2)控制器层: namespace frontend\modules\v1\controllers;use frontend\modu ...

  3. Restful API接口调用的方法总结

    restful 接口调用的方法 https://www.cnblogs.com/taozhiye/p/6704659.html http://www.jb51.net/article/120589.h ...

  4. 三种方法实现java调用Restful接口

    1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  5. flask + nginx + uwsgi + ubuntu18.04部署python restful接口

    目录 参考链接 效果展示 一.准备工作 1.1 可运行的python demo: 1.2 更新系统环境 二.创建python虚拟环境 三.设置flask应用程序 四.配置uWSGI 五.设置系统启动 ...

  6. 基于MD5+RSA算法实现接口调用防扯皮级鉴权

    概述 最近项目中需要对第三方开发接口调用,考虑了一下,准备采用MD5+RSA算对请求数据进行签名,来达到请求鉴权,过滤非法请求的目标. 数字签名采用MD5+RSA算法实现.RSA私钥要严格保密并提供安 ...

  7. 三种方法实现调用Restful接口

    1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  8. Java方法通过RestTemplate调用restful接口

    背景:项目A需要在代码内部调用项目B的一个restful接口,该接口是POST方式,header中 Authorization为自定义内容,主要传输的内容封装在body中,所以使用到了RestTemp ...

  9. 前端调用后端的方法(基于restful接口的mvc架构)

    1.前端调用后台: 建议用你熟悉的一门服务端程序,例如ASP,PHP,JSP,C#这些都可以,然后把需要的数据从数据库中获得,回传给客户端浏览器(其实一般就是写到HTML中,或者生成XML文件)然后在 ...

随机推荐

  1. Rest模式get,put,post,delete含义与区别(转)

    POST   /uri     创建 DELETE /uri/xxx 删除 PUT    /uri/xxx 更新或创建 GET    /uri/xxx 查看 GET操作是安全的.所谓安全是指不管进行多 ...

  2. TCP连接中time_wait在开发中的影响-搜人以鱼不如授之以渔

    根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),T ...

  3. 长沙JavaEE培训机构哪家比较靠谱?Java培训的职业前景

    长沙JavaEE培训机构哪家比较靠谱?可信度高? 全球信息化的时代已经到来,IT行业越来越受大众的欢迎,所以越来越多的人把注意力集中到IT职业教育培训.在软件开发领域,Java培训已经成为人们的首选, ...

  4. linux 权限字母含义

    查看某一文件夹下所有文件夹的权限情况:ls -l分别是:所有者(user)-所有者(user)-其他人(other)r 表示文件可以被读(read)w 表示文件可以被写(write)x 表示文件可以被 ...

  5. loadrunner 手工参数拼接与l oadrunner的url编码

    Acction() { //演示需要的一些变量,提前声明 char *name = "yezi_zh"; "; char *work = "engin" ...

  6. [leetcode-547-Friend Circles]

    There are N students in a class. Some of them are friends, while some are not. Their friendship is t ...

  7. CUDA零内存拷贝 疑问考证

    今天思考了一下CUDA零内存拷贝的问题,感觉在即将设计的程序中会派上用场,于是就查了一下相关信息. 以下是一些有帮助的链接: cuda中的零拷贝用法--针对二维指针 cuda中的零拷贝用法--针对一维 ...

  8. Openfire开发广播服务接口,支持离线广播消息

    Openfire开发广播服务接口,支持离线广播消息 概要 最近公司要求做一个web端向所有移动端发送公告,所以考虑到即时性就用openfire做服务.不过为了减轻web端的工作量,我们开发一个简单的插 ...

  9. win10下安装python

    1. 在官网下载python:https://www.python.org/ftp/python/3.5.2/python-3.5.2-amd64.exe 这里下载的是3.5.2版. 2. 双击exe ...

  10. Hibernate的一个简单应用例子

    Hibernate是一个开源的ORM框架,顾名思义,它的核心思想即ORM(Object Relational Mapping,对象关系映射),可以通过对象来操作数据库中的信息,据说开发者一开始是不太熟 ...