由于在实际项目中碰到的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. B. Karen and Coffee

    B. Karen and Coffee time limit per test 2.5 seconds memory limit per test 512 megabytes input standa ...

  2. linux虚拟机下安装samba

    默认情况下,Linux系统在默认安装中已经安装了Samba服务包的一部分 ,为了对整个过程有一个完整的了解,在此先将这部分卸载掉.使用命令 rpm -qa | grep samba ,默认情况下可以查 ...

  3. Chapter 4. The MPEG-4 and H.264 Standards

    本章节介绍一些关于MPEG-4标准与H.264标准的基本知识 比较重要的是第95页关于两种标准的对比表格.其他部分没有什么特别重要的细节.

  4. asp.net core 中灵活的配置方式

    asp.net core支持外部文件和命令行参数方式来配置系统运行所需要的配置信息,我们从下面两个常用场景来具体说下具体使用方法. 一.监听地址及端口配置 1,命令行方式 asp.net core系统 ...

  5. 3.ubuntu如何安装搜狗输入法

    1.http://blog.csdn.net/qq_21792169/article/details/53152700 2.http://jingyan.baidu.com/article/54b6b ...

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

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

  7. java-bootstrap

    先来看一段每一个项目都要写的BASH脚本. #!/usr/bin/env bash in start ) ;; stop ) ;; restart ) shift "$0" sto ...

  8. VMwareTools安装失败提示找不到C headers和gcc目录

    在VMware虚拟机上安装好linux系统后,发现往往不能全屏,也不能设置共享文件夹进行文件共享,这时候可以通过安装VMwareTools这个工具来实现文件拖拽.共享和全屏. 安装的过程不再赘述,关键 ...

  9. Css绘制形状

    前言:终于我的大一生活结束了,迎来了愉快的暑假,大家都开始了各自的忙碌.一直忙着一些项目的事情,终于决定今天要更新一篇博客了,对上一阶段的学习做简单的总结. 这次我主要总结一下用Css绘制各种形状的技 ...

  10. input输入框自动填充黄色背景解决方案

    chrome表单自动填充后,input文本框的背景会变成偏黄色的,这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对其赋予以下样式: ...