目录

1. JAVA WEB接口开发简述

1.1. 基本了解

1.2. 提供接口

1.3. 调用接口

1. JAVA WEB接口开发简述

1.1. 基本了解

  当我们想去访问其他网站的接口时候,而又不想要登录验证等操作,那么可以选择使用平台提供的接口进行调用得到我们需要的信息。比如说,一个网站A有一个接口路径: http://192.168.10.119:8080/xmq/webservice/menu/search?ak=APP00013&token=yq6ZaljwYMa1x83r0hSHVhQ45DA%3D

  当我们需要调用这个接口的时候就要满足ak参数以及token参数。这个时候,我们需要去拼接这样的一个url,然后调用平台提供的jar包或者其他的工具去获取信息。

1.2. 提供接口

  确保网站A提供的调用接口可以使用,这里开发接口的时候,需要定义一些规则,比如具体的返回数据定义,状态码定义等等,以便调用更明了。具体开发要根据实际情况来决定。

1.3. 调用接口

  这样的接口我们可能用到这些jar包,如下图:

  

  当然还有json等相关的jar包,这个需要根据调用的网站来确定需要哪些具体的jar包。

  常用到的类如HttpClient、HttpGet、HttpPost、HttpDelete等。

  简单调用HttpGet:

 protected HttpClient c;

 HttpGet get = new HttpGet(url);

 HttpResponse response = c.execute(get);

  简单调用HttpPost:

 HttpPost post = new HttpPost(url);

 StringEntity entity = new StringEntity(json, ContentType.create("text/plain", "UTF-8"));

 post.setEntity(entity);

 response = c.execute(post);

  简单调用HttpDelete:

 HttpDelete delete = new HttpDelete(url);

 HttpResponse response = c.execute(delete);

  调用文件流和参数(比如有的接口是文件上传的情况):

//定义调用参数
String private_key = "fcea920f7412b5da7be0cf42b8c93759";
String timestampP=getTimestamp()+"";
String accountP = "123456";
String projidP = "10000";
String typeP = "1";
String signP=accountP+private_key+timestampP+projidP+typeP; //设置请求参数
StringBody account = new StringBody(accountP);
StringBody timestamp = new StringBody(timestampP);
StringBody sign = new StringBody(getMD5Str(signP));
StringBody projid = new StringBody(projidP);
StringBody type = new StringBody(typeP);
FileBody fb = new FileBody(new File("C:/xmq.dwg")); //设置请求参数类型
MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("account", account);
reqEntity.addPart("timestamp", timestamp);
reqEntity.addPart("projid", projid);
reqEntity.addPart("sign", sign);
reqEntity.addPart("type", type);
reqEntity.addPart("file", fb); String url = "http://122.22.11.50:9090/UploadFile";
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(reqEntity);
BasicHttpParams httpParams = new BasicHttpParams();  
HttpConnectionParams.setConnectionTimeout(httpParams, 120000);//设置连接超时  
HttpConnectionParams.setSoTimeout(httpParams, 120000);//设置请求超时
HttpClient client = new DefaultHttpClient(); HttpResponse response = client.execute(httpPost);
System.out.println("调用结果Data:" + CameraUtil.getData(response));
//附件上传接口,需要注意接口提供者的服务器有没有限制文件上传的大小、请求超时的时间等;
//我就碰到这样的情况,大附件怎么都上传不了,我找了很久原因,发现接口提供者IIS服务限制了附件上传的大小。。。

调用文件流(比如有的接口是文件下载的情况):

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection; public class FileDown { public static void main(String[] args) {
// 根据已有的url连接下载文件
String urlStr = "http://117.27.145.20:8088/2017010915281017322.edc";
String fileName = "C:/Users/Administrator/Desktop/work/wjxt_文件系统/a.edc";
downloadFromUrl(urlStr, fileName);
} /**
* 根据urlStr下载流,下载文件到指定fileName
*
* @param urlStr
* @param fileName
*/
public static void downloadFromUrl(String urlStr, String fileName) {
// 构造URL
URL url;
try {
url = new URL(urlStr);
// 打开连接
URLConnection con = url.openConnection();
// 输入流
InputStream is = con.getInputStream();
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流s
OutputStream os = new FileOutputStream(new File(fileName));
// 开始读取
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// 完毕,关闭所有链接
os.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
} }

  我们可以对response进行处理,如:

 //200为成功状态码

 if(response.getStatusLine().getStatusCode() == 200){

   String responseText = null;

   try {

     responseText = EntityUtils.toString(response.getEntity() , "UTF-8");

   } catch (ParseException e) {

     e.getMessage();

   } catch (IOException e) {

      e.getMessage();

   }

   //返回数据处理responseText

   //一般是json数据格式,根据实际需求处理

 }else{

   //异常信息response.getStatusLine().getStatusCode();

 }

JAVA WEB接口开发简述的更多相关文章

  1. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  2. 使用MyEclipse搭建java Web项目开发

    转自:http://blog.csdn.net/jiuqiyuliang/article/details/36875217 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成 ...

  3. 如何用比较快速的方法掌握Spring的核心——依赖注入,Java web轻量级开发面试教程 读书笔记

    我们知道,Java方面的高级程序员一定得掌握Spring的技能,其中包括Spring 依赖注入(IOC),面向切面(AOP),和数据库的整合(比如和Hibernate整合或声明式事务等)以及Sprin ...

  4. 第一章 Java Web应用开发技术

    Java Web应用开发是基于JavaEE(JavaEnterprise Edition)框架的,而JavaEE是建立在Java平台上的企业级应用解决方案.JavaEES框架提供的Web开发技术主要支 ...

  5. Django Web接口开发

    什么是接口 接口一般来讲分为两种: (1)程序内部的接口:方法与方法.模块与模块之间的交互,程序内部抛出的接口,如登录发帖,发帖就必须要登录,如果不登录不能发帖,发帖和登录这两个模块之间就要有交互,就 ...

  6. 《Python Web 接口开发与测试》---即将出版

    为什么要出这样一本书? 首先,今年我有不少工作是跟接口自动化相关的,工作中的接口自动化颇有成效. 我一直是一个没有测试大格局的人,在各种移动测试技术爆发的这一年,我却默默耕耘着自己的一亩三分地儿(We ...

  7. java web的开发 知识要点

    近期闲下来时写的一个有关 java web的开发 的 常用架构 的总结,用于初 学 者或团队新人培训. Java开发初步.ppt SSH  为 struts+spring+hibernate 的一个集 ...

  8. Java Web高性能开发(三)

    今日要闻: Clarifai:可识别视频中物体 最近几年,得益于深度学习技术的发展,谷歌和Facebook等企业的研究人员在图形识别软件领域取得了重大突破.现在,一家名为Clarifai的创业公司则提 ...

  9. Java Web高性能开发(二)

    今日要闻: 性价比是个骗局: 对某个产品学上三五天个把月,然后就要花最少的钱买最多最好的东西占最大的便宜. 感谢万能的互联网,他顺利得手,顺便享受了智商上的无上满足以及居高临下的优越感--你们一千块买 ...

随机推荐

  1. springmvc 的配置 annotation-config/annotation-drive/ component-scan 区别

    1. <context:annotation-config /> 作用隐式的配置注解的加载类,默认的加载了AutowiredAnnotationBeanPostProcessor(auto ...

  2. MongoDB入门解析

    刚开始学习mongodb,对笔记做了一个整理.是基于nodejs来学习的. 1.mongodb介绍 mongodb 是C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添 ...

  3. Vue全局添加组件或者模块

    import Api from './api.js' export default { install (Vue) { Vue.prototype.$Api = Api } } 这种格式就可以在mai ...

  4. Android(java)学习笔记194:ContentProvider使用之获得系统联系人信息02(掌握)

    1.重要: 系统删除一个联系人,默认情况下并不是把这个联系人直接删除掉了,只是做了一个标记,标记为被删除. 2.前面一讲说过了如何获取系统联系人信息(通过ContentProvider),获取联系人信 ...

  5. docker使用registry搭建本地私有仓库

    参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/ 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时 ...

  6. CAD参数绘制批注(com接口)

    C#中实现代码说明: private void DrawComment() { MxDrawComment com = new MxDrawComment(); MxDrawPoint pt = ne ...

  7. ffmpeg处理网络流

    最近遇到好几个人在问ffmpeg如何处理网络流,刚好前段时间也在做这方面,抽空整理了下,把主要代码发出来,希望对大家有用.为简单处理,我这里只简单介绍UDP接收TS流,其实只要是socket接收的都可 ...

  8. 20181225模拟赛 T1 color (转化思想,分拆思想)

    题目: 有⼀块有 n 段的栅栏,要求第 i 段栅栏最终被刷成颜色 ci .每⼀次可以选择 l, r 把第l . . . r 都刷成某种颜色,后刷的颜⾊会覆盖之前的.⼀共有 m 种颜色,雇主知道只需要用 ...

  9. [Luogu] P1865 A % B Problem

    题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Cros ...

  10. 在你的Android手机上运行Linux

    之前试过许多方法(也就几种),像什么Complete Linux Installer,Debian noroot,利用已有的Linux构造Bootstrap之类,要么就是复杂得要命(调了两天没有调出来 ...