此类以获取天气的一个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类的使用的更多相关文章

  1. HttpURLConnection类

    导语 java.net.HttpURLConnectin类是URLConnection类的抽象子类.它在处理协议为HTTP的URL时特别有效.具体而言,它通过它可以获取和设置请求方法,确定是否重定向, ...

  2. JDK下sun.net.www.protocol.http.HttpURLConnection类-----Http客户端实现类的实现分析

    HttpClient类是进行TCP连接的实现类, package sun.net.www.http; import java.io.*; import java.net.*; import java. ...

  3. [02] URL和HttpURLConnection类

    1.URL的概念 统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址. URL的基本格式是: <METHOD&g ...

  4. Android基于HttpUrlConnection类的文件下载

    /** * get方法的文件下载 * <p> * 特别说明 android中的progressBar是google唯一的做了处理的可以在子线程中更新UI的控件 * * @param pat ...

  5. 安卓开发之HttpURLConnection类和Handler类的使用

    package com.lidaochen.test; import java.io.ByteArrayOutputStream; import java.io.InputStream; public ...

  6. HttpUrlConnection类基本使用

    这个类用来模拟浏览器向服务器发送请求和接收响应 注意: HttpUrlConnection对象简称huc对象 1)获取huc对象向url构造中传递url字符串,并调用openconnection方法即 ...

  7. java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)

    项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ...

  8. Android的HttpUrlConnection类的GET和POST请求

    /** * get方法使用 */ private void httpGet() { new Thread() { @Override public void run() { //此处的LOGIN是请求 ...

  9. Android使用HttpURLConnection通过POST方式发送java序列化对象

    使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...

随机推荐

  1. flume用场景及架构原理

    Flume是什么 1.flume可以将采集到的数据存储到HDFS上,也可以放在Hbase上. 2.flume就是一个中间插件,他的作用就是屏蔽数据源和数据存储系统的差异.可以在不同的数据源采集数据,因 ...

  2. kafka的几个简单操作

    怎么安装解压kafka这里就不多说了,从配置文件说起 我这里搭建的是三节点集群 master  slave1 slave2 修改server.properties 文件 把自己本地安装的zookeep ...

  3. http与https之间的区别

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂 ...

  4. CS229 6.10 Neurons Networks implements of softmax regression

    softmax可以看做只有输入和输出的Neurons Networks,如下图: 其参数数量为k*(n+1) ,但在本实现中没有加入截距项,所以参数为k*n的矩阵. 对损失函数J(θ)的形式有: 算法 ...

  5. Linux性能优化 第六章 性能工具:磁盘I/O

    6.1 磁盘I/O介绍 一般来说,Linux磁盘的每个分区要么包含一个文件系统,要么包含一个交换分区.这些分区被挂载到Linux根文件系统,该系统由/etc/fstab指定.这些被挂载的文件系统包含了 ...

  6. python初探 socket

    1.什么是socket? Socket中文译作:套接字,但是大家一般约定俗称的都用:socket.我想在解释socket是什么之前,先说它是用来干嘛的:socket是来建立‘通信’的基础,建立连接,传 ...

  7. Java中对List集合的常用操作(转)

    list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引位置重新 ...

  8. glob获取指定目录下的东西+更改工作目录

    一:不更改工作目录 import glob path = 'image/imgs/*.jpg' # 正则匹配 指定路径 file_path = glob.glob(path) # 即可获取所有jpg的 ...

  9. couchdb安装

    fabric涉及到了couchdb做为数据库,所以单独安装一个进行测试,当然也可以使用docker来安装. 项目地址:http://couchdb.apache.org/ 这里采用windows来安装 ...

  10. ORACLE 监听配置

    安装后最开始如下 # listener.ora Network Configuration File: D:\oracle\app\Administrator\product\11.2.0\dbhom ...