經過代理服務器ip 端口發送請求接收響應數據

不少項目須要部署在內部服務器上,但項目中又須要向外部網絡環境發送請求的需求,公司爲了內部網絡的安全會提供代理主機,來轉發這種鏈接外部外部網絡的請求。一個常見的場景,好比:項目中須要請求外網的天氣情況接口,這就須要經過代理主機來發送請求。

下文內容就是發送請求,接收數據的示例java

高德地圖提供天氣查詢接口: https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=3ff9482454cb60bcb73f65c8c48d4209

請求代碼json

import java.io.ByteArrayOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.net.HttpURLConnection;  
import java.net.InetSocketAddress;  
import java.net.Proxy;  
import java.net.URL;  
import java.util.ArrayList;  
import java.util.List;

public static final String weather_url =""; //要請求的外網url
public static final String proxy_ip ="";  //代理的ip
public static final String proxy_port="";  //代理的端口


//請求代碼
try {  
  URL url = new URL(weather_url);  
  //建立代理對象
  Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy_ip, Integer.parseInt(proxy_port)));  
  //建立代理連接
  HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);  
  connection.connect();  
  //經過連接獲取響應流對象
  InputStream in = connection.getInputStream();  
  //將響應的流對象寫入object對象
 byte[] bytes = toByteArray(in);  
 //定義接收的返回值編碼格式
  String content = new String(bytes,"UTF-8");  
  JSONObject forObject = JSONObject.parseObject(content);  
  //在從json對象中獲取lives節點的數據
  String lives = forObject.getJSONArray("lives").toString();  
} catch (Exception e) {  
 log.error("調用查詢天氣接口失敗[{}]",e);  
  e.printStackTrace();  
}

發送請求後接收到的是流對象,須要將流對象轉換爲jsonobject對象,再作後續處理
以上api

相關文章
相關標籤/搜索