1.get
packagejiekou_test_test2;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;import java.net.*;public classjuhewether_get {public static voidmain(String[] args) {//TODO Auto-generated method stub//set fillder proxy
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8888");
String lon= "116";
String lat= "39";
String key= "bf74bdf2807069fd35a82e3aa19445d5";
String url= "http://v.juhe.cn/weather/geo"+"?"+"lon="+lon+"&"+"lat="+lat+"&"+"key="+key;try{
URL juhe_wether_get_url= newURL(url);
HttpURLConnection openConnection=(HttpURLConnection)juhe_wether_get_url.openConnection();
openConnection.connect();
InputStream is=openConnection.getInputStream();
InputStreamReader ir= new InputStreamReader(is, "utf-8");
BufferedReader br= newBufferedReader(ir);
StringBuffer sb= newStringBuffer();
String temp= "";while((temp = br.readLine()) != null) {
sb.append(temp);
}
String result=sb.toString();
System.out.print(result);
}catch(Exception e){
}finally{
}
}
}
2.POST
packagejiekou_test_test2;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;import java.net.*;public classjuhewether_post {public static voidmain(String[] args) {//TODO Auto-generated method stub//set fiddler proxy
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8888");
String lon= "116";
String lat= "39";
String key= "bf74bdf2807069fd35a82e3aa19445d5";
String url= "http://v.juhe.cn/weather/geo";//create a url
URL post_url = null;
HttpURLConnection openConnection= null;try{
post_url= newURL(url);//open collection
openConnection =(HttpURLConnection)post_url.openConnection();//set request method
openConnection.setRequestMethod("POST");//set headers
openConnection.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");//preapare data
String data = "lon="+lon+"&"+"lat="+lat+"&"+"key="+key;//open write os
openConnection.setDoOutput(true);//write data
OutputStream os =openConnection.getOutputStream();
os.write(data.getBytes());if(openConnection.getResponseCode() == 200) {//read inputstream
InputStream is =openConnection.getInputStream();
InputStreamReader isr= new InputStreamReader(is, "UTF-8");
BufferedReader br= newBufferedReader(isr);//strore result
StringBuffer sb = newStringBuffer();
String temp= "";while((temp=br.readLine()) != null) {
sb.append(temp);
}
String result=sb.toString();
System.out.print(result);
}else{
System.out.print("status code is not 200!");
}
}
}catch(Exception e) {
e.printStackTrace();
System.out.print("exception occurs");
}finally{if(openConnection != null) {
openConnection.disconnect();
}
}
}
3.记忆点
1.需要知道request的面向对象的设计思想,记住需要使用的类:
reqeust包:
URL
HttpURLConnection
IO流
2.真正发送请求的时机是 httpURLConnection.getInputStream方法的调用(通过fiddler抓包证实)
3.httpURLConnection.connect()方法不需要显示地调用,它的作用是建立tcp连接,如果不显示的调用,从connection获取输入流的时候也会先建立连接。
它更多的作用是区别设置request和获取response的时机。
4.参考博文:https://www.cnblogs.com/skys-li/p/6121044.html