贱男淫

导航

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;
    }
    

}

 

 

posted on 2013-01-04 15:59  贱男淫  阅读(158)  评论(0)    收藏  举报