`
fred_张浩
  • 浏览: 32184 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

小码农的代码(五)----------web交互之HTTP传输HttpURLConnection

阅读更多
工作中难免会遇到多系统交互的问题,回顾开发过的项目有用过公司内部封装的scoket,也有webService,目前物流系统与上游ERP系统与下游仓储系统对接使用的是http方式的交互,因此先来记录一下http方式交互的代码编写思路与内容,在后续的博文中再来讨论scoket与webservice。
对于http自然就有get与post两种方式,我的理解是get方式更倾向于消息的获取,而post在于信息的交互与修改,在请求中get方式会在url中出现明文的参数,而post方式相对来说就更加安全而且请求没有大小限制。
在本文中使用的是URLConnection来实现http post传输。首先新建一个Url,


URL localURL = new URL("http://localhost:8080/HttpServerDemo/servlet/LoginServlet");HttpURLConnection httpURLConnection = (HttpURLConnection) connection;

然后打开一个url连接,
URLConnection connection = localURL.openConnection();
再者设置相关的http报文头,设置请求方法为POST
httpURLConnection.setDoOutput(true);//使用 URL 连接进行输出
		httpURLConnection.setDoInput(true);//使用 URL 连接进行输入
		httpURLConnection.setRequestMethod("POST");
		httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
		httpURLConnection.setRequestProperty("Content-Type",
				"application/x-www-form-urlencoded");
		httpURLConnection.setRequestProperty("Content-Length",
				String.valueOf(parameterData.length()));

最后就是通过流形式将参数内容写入请求体中。
OutputStream outputStream = httpURLConnection.getOutputStream();OutputStreamWriter outputStreamWriter = null;
outputStreamWriter = new OutputStreamWriter(outputStream,"utf-8");
			outputStreamWriter.write("请求参数");			outputStreamWriter.flush();
调用完毕之后记得关闭流同样的,如果需要将服务端的返回信息进行打印,也通过流的方式获取并输出。
InputStream inputStream = null;
		InputStreamReader inputStreamReader = null;
		BufferedReader reader = null;inputStream = httpURLConnection.getInputStream();
			inputStreamReader = new InputStreamReader(inputStream);
			reader = new BufferedReader(inputStreamReader);

			while ((tempLine = reader.readLine()) != null) {
				resultBuffer.append(tempLine);
			}
这里有个注意点就是reader.readLine()需要赋值之后再去判断,否则判断的值与循环体内的tempLine的值不一致导致错误,另外同样需要关闭流接下去就是服务端的代码新建一个servlet,通过request.getInputStream()输入流获取请求内容并打印
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader( request.getInputStream(),"utf-8"));
        StringBuffer buffer = new StringBuffer();
        String line = new String();
        while ((line = bufferedReader.readLine()) != null) {
        	buffer.append(line).append("\n");
		}
        System.out.println(buffer.toString());
对于需要输出到客户端的返回报文同样写入输出流通过response输出
 response.setCharacterEncoding("utf-8");
        response.setContentType("text/plain; charset=UTF-8");
       PrintWriter writer = response.getWriter();
        writer.write(buffer.toString());
        response.getWriter().write("It is ok!");
这里有个注意点就是对于输出编码的设置必须在写入流之前对response进行设置才能起到效果最后关闭各个流。
这样,一个简单的http post请求与服务器响应就写完了,总结而言就是将参数信息通过输出流的方式写入到请求中,通过HttpURLConnection方式传递到服务器。服务器对请求内容进行解析并返回到客户端。
而在实际的开发过程中,多数情况是在获得服务器请求报文格式的前提下进行开发,这时就只需要按照报文格式来向服务端发送请求即可,通常报文支持json或者xml格式,下面就对这两种方式写一个简单的测试用例。首先是json格式的只需要将前文中outputStreamWriter.write("请求测试")的内容替换为jsonObject.toString()即可,xml同理。
JSONObject jsonObject = new JSONObject();
		jsonObject.append("username", "fredzhanghao");
		jsonObject.append("blog", "http://675990021.iteye.com/admin");
		jsonObject.append("test", "中文测试");
json格式需要加载json包,具体见pom文件
1
1
分享到:
评论

相关推荐

    Android25图灵聊天项目------HttpURLConnection请求get文本数据

    通过分析这个文件,你可以深入理解Android应用如何与服务器进行交互,获取并处理文本数据。同时,这也是一个很好的学习和实践机会,有助于提升你的Android网络编程技能。在实际开发中,你还需要考虑错误处理、安全性...

    网络请求----HttpURLConnection的get,post和图片加载

    在IT行业中,网络请求是应用程序与服务器之间交互的基础,尤其是对于Web应用而言。HttpURLConnection是Java标准库中用于处理HTTP协议的类,它是Socket编程的一个轻量级接口,提供了GET、POST等请求方法以及图片加载...

    即时访问网络图片文件展示---HttpURLConnection

    标题中的“即时访问网络图片文件展示---HttpURLConnection”是指通过Java的HttpURLConnection类来实现从网络上获取并显示图片的功能。HttpURLConnection是Java标准库提供的一种HTTP协议的网络连接工具,它允许应用...

    一个 定时向网络访问数据 的程序,地震速报--HttpURLConnection与 Service 侦测服务

    一个 定时向网络访问数据 的程序,地震速报--HttpURLConnection与 Service 侦测服务, 详情请参见 http://blog.csdn.net/aduovip/article/details/17054129

    使用HttpUrlConnection实现上传文件 服务器端代码

    在Java编程环境中,当需要与Web服务器交互,例如上传文件时,`HttpURLConnection`是一个常见的选择,因为它提供了灵活且高效的方式。本篇文章将详细讲解如何使用`HttpURLConnection`实现文件上传,同时涉及到服务器...

    tomcat与web程序结构与Http协议与HttpUrlConnection.pdf

    【标题】:“Tomcat与Web程序结构与Http协议与HttpUrlConnection.pdf” 【描述】:这份资料涵盖了Tomcat服务器的基础知识,包括其性质、安装配置、常见问题以及Web应用程序的结构。同时,还讨论了Http协议和Java中...

    Android-使用HttpURLConnection实现断点续传

    这对于大文件传输和节省用户流量非常有帮助。 **步骤1:初始化下载任务** 在Android应用中,我们需要维护一个DownloadTask类,用于管理每个下载任务。这个类需要包含文件URL、本地存储路径、当前下载进度等信息。...

    Android与Web端交互源码

    在移动应用开发中,Android平台经常需要与Web端进行数据交互,以便实现用户界面与服务器数据的同步。这个"Android与Web端交互源码"是一个非常实用的学习资源,特别是对于初学者来说,它能帮助理解如何在Android应用...

    http.rar httpurlconnection

    首先,HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。它是一个基于请求与响应模型的、无状态的、应用层协议。 HTTP URLConnection是Java标准库...

    本示例使用HttpUrlConnection实现上传文件

    本示例重点讲解如何利用Java内置的HttpURLConnection类来完成这个任务。HttpURLConnection是Java标准库提供的一种轻量级的HTTP客户端接口,适用于简单的HTTP通信场景。 首先,我们来看一下上传文件的基本流程: 1....

    HttpURLConnection文件下载\httpURLConnection文件下载

    在给定的代码片段中,展示了如何使用`HttpURLConnection`进行文件下载。 首先,我们看到代码引入了`java.io`、`java.net`和`java.util`这三个包。`java.io`包含了输入/输出流,用于处理数据的读写;`java.net`包含...

    android手机开发源代码--7、8

    在Android手机开发领域,源代码是理解系统工作原理和学习编程技术的重要资源。"android手机开发源代码--7、8" 提供了50多个经典小程序的源代码,旨在帮助新手快速入门Android应用开发。这些源代码适用于Google手机...

    057集-Android客户端与服务端交互-服务端代码

    在本节"057集-Android客户端与服务端交互-服务端代码"的视频教程中,我们将深入探讨Android应用程序如何与服务端进行有效且安全的通信,这对于开发任何涉及网络功能的Android应用来说都是至关重要的。这个教程针对的...

    Java自带的HttpURLConnection访问接口实现文件上传

    在Java编程语言中,HTTPURLConnection是Java标准库提供的一个接口,用于通过HTTP协议与服务器进行通信。这个接口在java.net包下,是处理HTTP请求的基础类,包括发送GET、POST等请求,以及文件上传功能。在本文中,...

    HttpURLConnection-Vegetables

    `HttpURLConnection-Vegetables`这个主题可能是一个示例项目或教程,通过蔬菜相关的数据来演示如何使用`HttpURLConnection`进行网络请求。 `HttpURLConnection`相比于其他的HTTP客户端库(如Apache HttpClient或...

    SpringMVC精品资源-- Web server and web framework of Android pl.zip

    "SpringMVC精品资源-- Web server and web framework of Android pl.zip" 这个压缩包文件很可能包含了与在 Android 上使用 SpringMVC 相关的教程、代码示例或者工具集。 1. **SpringMVC 概述**: SpringMVC 是 ...

    Android Http交互代码实例

    首先,Android客户端进行HTTP交互通常会使用`HttpURLConnection`或第三方库如`Volley`、`OkHttp`等。`HttpURLConnection`是Android SDK内置的API,适用于简单的小规模请求,而`Volley`和`OkHttp`则提供了更高效的...

Global site tag (gtag.js) - Google Analytics