HttpURLConnection类的使用
此类以获取天气的一个api地址为例:
package javaexcjs; import java.io.BufferedReader;
import java.io.OutputStreamWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection;
import java.net.URLEncoder; import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.Set; public class CopyOfSendPostRequest {
static String sessionId = ""; public static void main(String[] args) throws Exception { //城市名称
String city = URLEncoder.encode("重庆", "GB2312");
System.out.println(city);
// api url :北向URL
String locationUrl = "http://php.weather.sina.com.cn/xml.php?city=" + city + "&password=DJOYnieT8234jlsK&day=0"; // http body 消息体
String reqBody = ""; // http method
String method = "POST"; // http head : Content-Type 消息类型
String contentType = "application/json;charset=UTF-8"; // 设定连接的相关参数
URL url = new URL(locationUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setReadTimeout(10000);
connection.setRequestMethod(method);
connection.setRequestProperty("Content-Type", contentType); //写入请求消息体
OutputStreamWriter out = new OutputStreamWriter(
connection.getOutputStream(), "UTF-8");
out.write(reqBody);
out.flush();
out.close(); // 获取服务端的反馈
String strLine = "";
StringBuilder strResponse = new StringBuilder();
try {
Map<String, List<String>> rspHeaders = connection.getHeaderFields(); Set<String> rspHeadNames = rspHeaders.keySet();
for (String key : rspHeadNames) {
//rspHeaders中的http状态码和描述的键为null
if (null != key) {
strResponse.append(key + ": ");
}
strResponse.append(new String(rspHeaders.get(key).get(0)
.getBytes("iso-8859-1"), "UTF-8")
+ "\n");
} int code = connection.getResponseCode();
// String status = connection.getResponseMessage();
InputStream in; // 判断http状态码
if (code == 200) {
in = connection.getInputStream();
} else {
in = connection.getErrorStream();
}
if (null != in) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(in)); while ((strLine = reader.readLine()) != null) {
strResponse.append("\n" + strLine);
}
}
System.out.print(strResponse.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
HttpURLConnection类的使用的更多相关文章
- HttpURLConnection类
导语 java.net.HttpURLConnectin类是URLConnection类的抽象子类.它在处理协议为HTTP的URL时特别有效.具体而言,它通过它可以获取和设置请求方法,确定是否重定向, ...
- JDK下sun.net.www.protocol.http.HttpURLConnection类-----Http客户端实现类的实现分析
HttpClient类是进行TCP连接的实现类, package sun.net.www.http; import java.io.*; import java.net.*; import java. ...
- [02] URL和HttpURLConnection类
1.URL的概念 统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址. URL的基本格式是: <METHOD&g ...
- Android基于HttpUrlConnection类的文件下载
/** * get方法的文件下载 * <p> * 特别说明 android中的progressBar是google唯一的做了处理的可以在子线程中更新UI的控件 * * @param pat ...
- 安卓开发之HttpURLConnection类和Handler类的使用
package com.lidaochen.test; import java.io.ByteArrayOutputStream; import java.io.InputStream; public ...
- HttpUrlConnection类基本使用
这个类用来模拟浏览器向服务器发送请求和接收响应 注意: HttpUrlConnection对象简称huc对象 1)获取huc对象向url构造中传递url字符串,并调用openconnection方法即 ...
- java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)
项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ...
- Android的HttpUrlConnection类的GET和POST请求
/** * get方法使用 */ private void httpGet() { new Thread() { @Override public void run() { //此处的LOGIN是请求 ...
- Android使用HttpURLConnection通过POST方式发送java序列化对象
使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...
随机推荐
- mobilehack -转
# mobileHack##工具类网站 [HTML5 与 CSS3 技术应用评估](http://html5please.com/ "html5与css3技术应用评估") [各种奇 ...
- Visual Studio 20年
这是一个暴露年龄的话题,如果一个程序员从第一个版本开始使用Visual Studio的话,现在应该是40多岁的中年大叔了.我的程序员生涯是从Visual basic 6.0 (vb6)开始的,一晃就过 ...
- 用jQuery实现简单的简单的轮播图
图片来源 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- 如何通过权限控制EXP导出指定的表
今天一客户朋友咨询一个Oracle数据库用户EXP权限控制的问题,问我有没有办法可以解决.问题是这样的: 目前他们那边有外面的开发公司人员在核心系统做开发,考虑到系统数据的敏感性,给他们建了一个数据库 ...
- eclipse聚合工程如何提交SVN,如何从SVN下载
提交: 比如聚合工程为taotao-manager,包含了taotao1,taotao2,taotao3等项目,在提交SVN只需 提交taotao-manager就可以了 1.右键taotao-man ...
- WPF Stake
WPF中的StackPanel.WrapPanel.DockPanel 转:http://blog.sina.com.cn/s/blog_6c81891701017a34.html StackPane ...
- c# 枚举的定义,枚举的用法,获取枚举值
1.定义枚举类型 public enum Test { 男 = , 女 = } 2.获取枚举值 public void EnumsAction() { var s = Test.男;//男 var a ...
- QT学习之QT5.7+opencv3.1安装及显示图像
如果有时间就按照这篇博文一步一步走: http://www.cnblogs.com/howlclat/p/6433097.html, 如果没时间: 直接下载最后的文件就可以了,不要浪费时间再去编译,真 ...
- ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot exe
在Mysql集群中创建用户时.出现如下错误! mysql> create user 'testuse'@'localhost' identified by '111111'; ERROR 129 ...
- uva-321-暴力枚举-隐式图搜索
题意:给你n个房间,有许多灯的控制开关,i房间灯的开关在j房间,未开灯的房间不能进,i房间和j房间之间如果没有门,也不能从i进入到j,开始房间是1,并且灯是开着的,问你是否能够走到最后一个房间n,并且 ...