今天用HttpURLConnection 写get 请求时,发现老是报错,后来发现了问题,记下来防止以后忘记:
/**
* 请求转发并返回结果
*
* @param response
* @param json
*/
public static String transferForGet(String data,String serverUrl) {
// 服务地址
URL url;
try {
url = new URL(serverUrl);
} catch (MalformedURLException e1) {
Util.err(e1);
return "fail";
}
// 设定连接的相关参数
HttpURLConnection connection = null;
String strResponse = "";
BufferedReader reader = null;
try {
connection = (HttpURLConnection) url.openConnection();
connection.connect();
connection.getInputStream();
strResponse = connection.getResponseCode()+":"+connection.getResponseMessage();
} catch (ProtocolException e) {
Util.err(e);
} catch (IOException e) {
Util.err(e);
} finally{
try{
if(reader != null){
reader.close();
}
}catch(Exception e){}
try{
connection.disconnect();
}catch(Exception e){
Util.err(e);
}
}
if(strResponse == null || strResponse.equals(""))
return "fail";
return strResponse;
}
当返回中没有信息来确定是否成功时,通过 connection.getResponseCode() 是否为200来判断是否成功
使用POST方法:
/**
* 请求转发并返回结果
*
* @param response
* @param json
*/
public static String transfer(String data,String serverUrl) {
// 服务地址
URL url;
try {
url = new URL(serverUrl);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
Util.err(e1);
return "fail";
}
// 设定连接的相关参数
HttpURLConnection connection = null;
String strResponse = "";
BufferedReader reader = null;
try {
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(50 * 1000);// 10秒
connection.setReadTimeout(50 * 1000);// 10秒
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"text/html; charset=utf-8");
connection.setRequestProperty("Connection", "close");
// 输出
OutputStreamWriter output = new OutputStreamWriter(connection
.getOutputStream(),"UTF-8");
output.write(data);
output.flush();
output.close();
// 获取服务端的反馈
String strLine = "";
InputStream in = connection.getInputStream();
reader = new BufferedReader(
new InputStreamReader(in,"UTF-8"));
while ((strLine = reader.readLine()) != null) {
strResponse += strLine ;
}
} catch (ProtocolException e) {
Util.err(e);
} catch (IOException e) {
Util.err(e);
} finally{
try{
if(reader != null){
reader.close();
}
}catch(Exception e){}
try{
connection.disconnect();
}catch(Exception e){
Util.err(e);
}
}
if(strResponse == null || strResponse.equals(""))
return "fail";
return strResponse;
}