java远程接口调用_java之远程接口调用

这篇博客详细介绍了如何使用Java进行远程接口调用。首先通过地址栏传值的方式,展示了如何创建Controller并发送HTTP请求,然后通过JSONObject传递参数,并在接收端使用@RequestBody接收。文中还涉及到Spring相关依赖和配置,以及使用HttpURLConnection进行POST请求的方法。
摘要由CSDN通过智能技术生成

一、通过地址栏传值

1、项目结构

45c0e7566dc4fdb6f5256c72fab4ac9a.png

2、pom.xml

4.0.0

test.com

test-com

war

1.0-SNAPSHOT

test-com Maven Webapp

http://maven.apache.org

junit

junit

3.8.1

test

org.springframework

spring-webmvc

${spring.version}

org.springframework

spring-jdbc

${spring.version}

org.springframework

spring-context

${spring.version}

org.springframework

spring-aop

${spring.version}

org.springframework

spring-core

${spring.version}

org.springframework

spring-test

${spring.version}

javax.servlet

jstl

1.2

org.springframework

spring-aspects

3.0.6.RELEASE

org.aspectj

aspectjrt

1.6.11

org.aspectj

aspectjweaver

1.6.11

cglib

cglib

2.1_3

javax.servlet

servlet-api

2.5

provided

net.sf.json-lib

json-lib

2.4

jdk15

test-com

UTF-8

3.1.2.RELEASE

3、web.xml

/p>

"http://java.sun.com/dtd/web-app_2_3.dtd" >

Archetype Created Web Application

dispatcher

org.springframework.web.servlet.DispatcherServlet

1

dispatcher

/

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

encodingFilter

/*

4、dispatcher-servlet.xml

default-lazy-init="true">

5、TestController.java

packagecom.controller;importcom.log.Log;importcom.remote.RemoteDemo;importnet.sf.json.JSONObject;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;/*** Created by sunjf on 2016/6/26.*/@Controllerpublic classTestController {

@Log(desc= "log测试")

@RequestMapping(value= "test1")publicString test1(){

String result= RemoteDemo.remoteJsonRequest("http://localhost:8080/test2?username=sun&password=123", 5000, newJSONObject());

System.out.println(result);return "success";

}

}

6、RemoteDemo.java

packagecom.remote;importnet.sf.json.JSONObject;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.net.HttpURLConnection;importjava.net.URL;/*** Created by Administrator on 2016/6/27.*/

public classRemoteDemo {public static String remoteJsonRequest(String url, inttimeout, JSONObject object) {

URL connect;

StringBuffer data= newStringBuffer();try{

connect= newURL(url);

HttpURLConnection connection=(HttpURLConnection) connect.openConnection();

connection.setRequestMethod("POST");

connection.setDoOutput(true);

connection.setReadTimeout(timeout);

connection.setRequestProperty("Content-Type", "application/json");

OutputStreamWriter paramout = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");

paramout.write(object.toString());

paramout.flush();

InputStream inputStream =connection.getInputStream();

InputStreamReader inputStreamReader= new InputStreamReader(inputStream, "UTF-8");

BufferedReader reader= newBufferedReader(inputStreamReader);

String line;while ((line = reader.readLine()) != null) {

data.append(line);

}

paramout.close();

reader.close();

}catch(Exception e) {

e.printStackTrace();

}returndata.toString();

}

}

7、调用另一项目中的借口(TestController.java)

packagecom.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;/*** Created by sunjf on 2016/6/26.*/@Controllerpublic classTestController {

@RequestMapping(value= "test2")

@ResponseBodypublicString test2(String username, String password){

System.out.println(username+ " | " +password);return username + " | " +password;

}

}

8、index.jsp

Hello World!

9、success.jsp

Hello Success!

二、同过jsonObject传值,通过object接收

1、TestController.java,请求端发送请求

packagecom.controller;importcom.log.Log;importcom.remote.RemoteDemo;importnet.sf.json.JSONObject;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;/*** Created by sunjf on 2016/6/26.*/@Controllerpublic classTestController {

@Log(desc= "log测试")

@RequestMapping(value= "test1")publicString test1(){

JSONObject jsonObject= newJSONObject();

jsonObject.put("username", "sun");

jsonObject.put("password", "123");

String result= RemoteDemo.remoteJsonRequest("http://localhost:8080/test2", 5000, jsonObject);

System.out.println(result);return "success";

}

}

2、TestController.java,被访问端接口

packagecom.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.ResponseBody;/*** Created by sunjf on 2016/6/26.*/@Controllerpublic classTestController {

@RequestMapping(value= "test2", method = RequestMethod.POST, produces="application/json")

@ResponseBodypublicString test2(@RequestBody User user){

System.out.println(user.toString());returnuser.toString();

}

}

注:注意此时的@RequestBody注解,为此需要在被访问端引入依赖

org.codehaus.jackson

jackson-mapper-asl

1.9.8

jar

compile

3、User.java,接收实体类

packagecom.controller;/*** Created by Administrator on 2016/6/28.*/

public classUser {privateString username;privateString password;

@OverridepublicString toString() {return "User{" +

"username='" + username + '\'' +

", password='" + password + '\'' +

'}';

}publicString getUsername() {returnusername;

}public voidsetUsername(String username) {this.username =username;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值