android 网络相关操作
httpget请求
我的原始:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpURLConnectionGetUnit
{
public static String httpget(String urlString)
{
System.out.println("url----------------------->" + urlString);
String resultData = "";
try {
URL url = new URL(urlString);
System.out.println("url----------------------->" + url);
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection
();
urlConn.setReadTimeout(15000);
InputStreamReader in = new InputStreamReader(
urlConn.getInputStream());
BufferedReader buffer = new BufferedReader(in);
String inputLine = null;
while ((inputLine = buffer.readLine()) != null)
{
resultData = resultData + inputLine + "\n";
}
in.close();
urlConn.disconnect();
}
catch (Exception E)
{
System.out.println(HttpURLConnectionGetUnit.class.getPackage().getName() + "HttpURLConnectionGetUnit.httpget出错,请检查网址" + urlString + "或网络连接");
E.printStackTrace();
}
return resultData;
}
}
后来,由于在实际开发中。发现了,移动的网络好像用此方法,很难得到数据。
经部门人员改正。
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.methods.GetMethod; import android.util.Log; public class HttpURLConnectionGetUnit { private static ThreadLocal<HttpClient> threadLocal = new ThreadLocal<HttpClient>(); public static String httpget(String url) { String Tag = "test"; String result = ""; Log.d(Tag, "请求的URL为:" + url); GetMethod getMethod = new GetMethod(url); try { threadLocal.set(new HttpClient()); threadLocal.get().executeMethod(getMethod); // result = getMethod.getResponseBodyAsString(); InputStream is = getMethod.getResponseBodyAsStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int i = -1; while ((i = is.read()) != -1) { baos.write(i); } result = baos.toString(); Log.d(Tag, "获取到的内容为:" + result); } catch (HttpException e) { result = "error1"; Log.e(Tag, "Get_CUrl:Url解析失败", e); } catch (IOException e) { result = "error1"; Log.e(Tag, "Get_CUrl:Url连接错误", e); } catch (Exception e) { result = "error2"; Log.e(Tag, "Get_CUrl:其他错误", e); } finally { getMethod.releaseConnection(); } return result; } }
此方法需要包commons-httpclient-3.1.jar
另外post部分源码
import java.io.InputStream; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; public class PostUrl { /** * Post请求,返回数据 * * @author TL * @param url * 请求地址 * @param param * 请求参数 * @return <b>result</b> 请求所返回的数据 * @throws Exception * */ public static String sendPost(String url, String param) throws Exception { String result = ""; URL httpurl = new URL(url); HttpURLConnection httpConn = (HttpURLConnection) httpurl .openConnection(); httpConn.setDoOutput(true); httpConn.setDoInput(true); PrintWriter out = new PrintWriter(httpConn.getOutputStream()); out.print(param); out.flush(); out.close(); InputStream in = httpConn.getInputStream(); byte[] b = new byte[1024]; int bytesRead = 0; try { while (true) { bytesRead = in.read(b, 0, 1024); result = result + new String(b, 0, bytesRead, "UTF-8"); } } catch (Exception e) { } return result; } }
再就是经常会用到post xml.
我在源代码的基础上改了一下。
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; public class PostUrl_XML { /** * Post请求,返回数据 * * @author TL * @param url * 请求地址 * @param param * 请求参数 * @return <b>result</b> 请求所返回的数据 * @throws Exception * */ public static String sendPost(String url, String param) throws Exception { String result = ""; URL httpurl = new URL(url); HttpURLConnection httpConn = (HttpURLConnection) httpurl .openConnection(); //httpConn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); httpConn.setRequestMethod("POST"); httpConn.setConnectTimeout(15000); httpConn.setDoOutput(true); httpConn.setDoInput(true); httpConn.setRequestProperty("Content-Type", "text/xml"); PrintWriter out = new PrintWriter(httpConn.getOutputStream()); out.print(param); out.flush(); out.close(); InputStreamReader in = new InputStreamReader(httpConn.getInputStream()); // 为输出创建BufferedReader BufferedReader buffer = new BufferedReader(in); String inputLine = null; // 使用循环来读取获得的数据 while (((inputLine = buffer.readLine()) != null)) { // 我们在每一行后面加上一个"\n"来换行 result += inputLine + "\n"; } // 关闭InputStreamReader in.close(); buffer.close(); // 关闭http连接 httpConn.disconnect(); return result; } }
浙公网安备 33010602011771号