java 远程调用url_使用Java的URL/HttpURLConnection进行远程调用(POST请求)

利用Java的HttpURLConnection进行远程url请求(调用远程接口)

测试类:请求类型为json,以post方式请求,利用OutputStream写入数据

实体类:public class User implementsSerializable {privateString name;privateString password;publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}publicString getPassword() {returnpassword;

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

}

}-------@RunWith(SpringRunner.class)

@SpringBootTestpublic classSpringboot02ApplicationTests {

@AutowiredprivateUserService userService;

@Testpublic voidcontextLoads(){

User user= newUser();

user.setName("lisi");

user.setPassword("123");//调用远程接口方法,获取返回结果类型

String result =userService.idendifyUser(user);

System.out.println(result);

}

}---------@Servicepublic class UserServiceImpl implementsUserService {publicString idendifyUser(User user){//将对象转换为json,然后发送;

String json =JSONObject.fromObject(user).toString();

String result= null;try{

result=UserRemoteVerify.doPost(json);

}catch(Exception e){

e.printStackTrace();

}returnresult;

}

}---------

/*** 调用远程接口,验证用户数据是否合理*/

public classUserRemoteVerify {//post请求

public static String doPost(String json) throwsException{//创建URL对象,设置请求url

URL url = new URL("http://127.0.0.1:8089/user/service");//调用URL对象的openConnection( )来获取HttpURLConnection对象实例

HttpURLConnection conn =(HttpURLConnection)url.openConnection();//请求方法为POST

conn.setRequestMethod("POST");//设置连接超时为5秒

conn.setConnectTimeout(5000);//允许输入输出

conn.setDoInput(true);

conn.setDoOutput(true);//不能缓存

conn.setUseCaches(false);//至少要设置的两个请求头//设置头部信息

conn.setRequestProperty("headerdata", "ceshiyongde");//一定要设置 Content-Type 要不然服务端接收不到参数

conn.setRequestProperty("Content-Type", "application/Json; charset=UTF-8");//输出流包含要发送的数据,要注意数据格式编码

OutputStream op=conn.getOutputStream();

op.write(json.getBytes());//服务器返回东西了,先对响应码判断

String result = null;if (conn.getResponseCode() == 200) {//用getInputStream()方法获得服务器返回的输入流

InputStream in =conn.getInputStream();//流转换为二进制数组,read()是转换方法

byte[] data = new byte[1024];

in.read(data);

result= new String(data, "UTF-8");

in.close();returnresult;

}returnresult;

}

}-------------远程服务端代码

@Controllerpublic classUserController {/*** 使用json接收客户端请求,返回json数据;url="http://127.0.0.1:8089/user/service"*/@PostMapping("user/service")

@ResponseBodypublic String dealUserForJson(HttpServletRequest request)throwsException{//调用处理服务,对远程数据进行校验,返回对应的结果

String result =UserRemoteHandle.verifyUser(request);returnresult;

}

}--------

/*** 处理远程数据验证*/

public classUserRemoteHandle {/*** 验证远程用户信息,若正确,则返回成功;否则返回失败*/

public static String verifyUser(HttpServletRequest request) throwsException{//根据HttpServletRequest获取输入流对象

InputStream inputStream = null;try{

inputStream=request.getInputStream();//使用byte[]数组存储接收到的数据

byte[] bytes = new byte[1024];//从输入流中将数据读取到bytes中

inputStream.read(bytes);//将bytes转换为字符串类型

String json = newString(bytes);//int i = 1/0;//服务端异常测试

if(StringUtils.isNotBlank(json)){

JSONObject jsonObject=JSONObject.fromObject(json);//将json类型转换为对象

User user = (User)JSONObject.toBean(jsonObject,User.class);//判断用户名和密码是否正确;假设用户名:lisi,密码:123;

if(user.getName().equals("lisi") && user.getPassword().equals("123")){return "success";

}

}

}catch(Exception e){

e.printStackTrace();return "服务端出现异常";

}finally { //释放资源

if(inputStream != null){

inputStream.close();

}

}//数据不符,返回错误信息

return "message is error";

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LindDotNetCore~职责链模式的应用

回到目录 职责链模式 它是一种设计模块,主要将操作流程与具体操作解耦,让每个操作都可以设置自己的操作流程,这对于工作流应用是一个不错的选择! 下面是官方标准的定义:责任链模式是一种设计模式。在责任链模式里&…

MR程序的几种提交运行模式

MR程序的几种提交运行模式 本地模型运行 1/在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行 ----配置path:D:\hadoop-2.7.2\bin ----配置hadoop_home:D:\hadoop-2.7.2 ----复制 hadoop.dll和winutil…

构件之法读书笔记04

我们前两周我们团队一起制作了一个大学生记账软件,但是我们没有对我们的软件进行测试,只要是这个功能能够顺利进行,我们就觉得OK。 其实,我认为我们的软件是有问题的,对于一些极限的操作能否完成,在各种环境…

零点起飞学java视频_零点起飞学java (刘升华) 高清PDF_IT教程网

资源名称:零点起飞学java (刘升华) 高清PDF第1篇 java开发基础第1章 java概述( 教学视频:37分钟) 2第2章 基本数据类型及运算( 教学视频:52分钟) 14第3章 java程序流程控制( 教学视频:33分钟) 36第4章 类与对…

【Spark】开发Spark选择Java还是Scala?

Spark-Java-Scala-哪种语言 spark java 支持_百度搜索(1 封私信)Spark 中用 Scala 和 java 开发有什么区别? - 知乎(1 封私信)Spark平台下,scala比java更有优势么? - 知乎

vector 修改 java_java对vector动态数组中的对象排序,以下代码有何问题,如何修改?...

展开全部package com.tx.collection;import java.util.Comparator;import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.TreeMap;import java.util.TreeSet;import java.util.Vector;public class Student {String name;int score;public S…

hadoop的序列化与java的序列化区别

java的序列化机制 java序列化时会把具体类的数据和类的继承结构信息都序列化传递。如下图hadoop的序列化机制 序列化类的数据,但是不序列化类的继承结构信息。 网络传递的时候就少了很多流量,hadoop也不需要类的继承关系,只要类的数据就够…

java mail 已发送_JavaMail获取已发送邮件

public static voidmain(String args[]) {Properties props new Properties(); //参数配置props.setProperty("mail.transport.protocol", "smtp"); //使用的协议(JavaMail规范要求)props.setProperty("mail.smtp.host", "smtp.exmail.qq.c…

ORA-08103: object no longer exists

今天工具箱报错: ORA-08103: object no longer exists 查了原因,是有session在操作表,比如插入,更新等。而工具箱这个操作刚好在select表,所以报错。-------下文是英文解释----- ORA-08103: object no longer exists错…

【Spark】Spark-空RDD判断与处理

Spark-空RDD判断与处理 SparkKafkaDemo - Streaming Statisticsrdd isempty count_百度搜索Spark RDD.isEmpty costs much time - Stack OverflowSpark Streaming中空RDD的处理-Spark-about云开发[SPARK-5270] Provide isEmpty() function in RDD API - ASF JIRA19 Spark Stre…

JDBC开发步骤

JDBC开发步骤: 1、加载数据库驱动 2、通过DriverManager获取数据库连接Connection 3、通过Connection获取Statement/PreparedStatement 4、将SQL语句绑定到Statement/PreparedStatement中去,准备向数据库发送SQL语句 5、执行完sql语句后&#xff0c…

DAY3-“忙里偷闲”找你玩耍2018-1-11

接触Java第三天,嘿嘿,今天近代史期末考试,提前一小时交卷,回宿舍继续学习,中午去见女神姐姐了,每次见完女神姐姐都是满满地动力。这次女神姐姐告诉我们要好好规划自己的时间,早上花20分钟规划好…

java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

1.java是如何管理内存的java的内存管理就是对象的分配和释放问题。(其中包括两部分)分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间。释放:对象的…

Gradle学习之构建java与web项目

一.使用Gradle的java插件构建Java项目 1)Gradle插件包含了若干个接口定义和已有的任务项,语法结构:apply plugin:插件名 ,此处我们定义插件 apply plugin : java 2)Gradle希望我们的java项目需要遵循以下规范: src/mai…

Hibernate单表开发步骤

Hibernate单边开发步骤: 1、创建Configuration,加载src/hibernate.cfg.xml配置文件,该配置文件中又去加载Hello.hbm.xml映射文件。 2、通过Configuration创建重量级SessionFactory。重量级:创建慢,内存占用大&#…

基于ssm出租车管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本出租车管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

redission java_Java注解如何基于Redission实现分布式锁

这篇文章主要介绍了Java注解如何基于Redission实现分布式锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下1、定义注解类Target({ ElementType.METHOD })Retention(RetentionPolicy.RUNTIME)Documentedpublic i…

Spring Security源码分析四:Spring Social实现微信社交登录

2019独角兽企业重金招聘Python工程师标准>>> 社交登录又称作社会化登录(Social Login),是指网站的用户可以使用腾讯QQ、人人网、开心网、新浪微博、搜狐微博、腾讯微博、淘宝、豆瓣、MSN、Google等社会化媒体账号登录该网站。 前言…

jdbc开发优缺点

1)优点:简单易学,上手快,非常灵活构建SQL,效率高 2)缺点:代码繁琐,难以写出高质量的代码(例如:资源的释放,SQL注入安全性等) 开发者既要写业务逻辑&#xff0…

java numberformat 方法_Java NumberFormat parse()用法及代码示例

parse(str)方法是java.text.NumberFormat的内置方法,该方法从给定字符串的开头解析文本以产生数字。该方法可能不使用给定字符串的整个文本用法:public Number parse?(String str)参数:该函数接受一个字符串str,其开头应进行分析。返回值&am…