就是这个控制台输出了post请求异常,然后我请求过来的事json,json里面是空的,我感觉就是post这里的问题

解决方案 »

  1.   

    这是获取链接的类,请问有什么错误么?
    package com.entity;import java.io.*; 
    import java.net.*;
    import java.util.*;/**
     * Description:
     * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a>
     * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee [email protected]
     * @version  1.0
     */
    public class GetPostUtil
    {
    /**
     * 向指定URL发送GET方法的请求
     * @param url 发送请求的URL
     * @param params 请求参数,请求参数应该是name1=value1&name2=value2的形式。
     * @return URL所代表远程资源的响应
     */
    public static String sendGet(String url, String params)
    {
    String result = "";
    BufferedReader in = null;
    try
    {
    String urlName = url + "?" + params;
    URL realUrl = new URL(urlName);
    // 打开和URL之间的连接
    URLConnection conn = realUrl.openConnection();
    // 设置通用的请求属性
    conn.setRequestProperty("accept","*/*");
    conn.setRequestProperty("connection", "Keep-Alive");
    conn.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    // 建立实际的连接
    conn.connect();  //①
    // 获取所有响应头字段
    Map<String, List<String>> map = conn.getHeaderFields();
    // 遍历所有的响应头字段
    for (String key : map.keySet())
    {
    System.out.println(key + "--->" + map.get(key));
    }
    // 定义BufferedReader输入流来读取URL的响应
    in = new BufferedReader(
    new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = in.readLine()) != null)
    {
    result += "\n" + line;
    }
    }
    catch (Exception e)
    {
    System.out.println("发送GET请求出现异常!" + e);
    e.printStackTrace();
    }
    // 使用finally块来关闭输入流
    finally
    {
    try
    {
    if (in != null)
    {
    in.close();
    }
    }
    catch (IOException ex)
    {
    ex.printStackTrace();
    }
    }
    return result;
    } /**
     * 向指定URL发送POST方法的请求
     * @param url 发送请求的URL
     * @param params 请求参数,请求参数应该是name1=value1&name2=value2的形式。
     * @return URL所代表远程资源的响应
     */
    public static String sendPost(String url, String params)
    {
    PrintWriter out = null;
    BufferedReader in = null;
    String result = "";
    try
    {
    URL realUrl = new URL(url);
    // 打开和URL之间的连接
    URLConnection conn = realUrl.openConnection();
    // 设置通用的请求属性
    conn.setRequestProperty("accept", "*/*");
    conn.setRequestProperty("connection", "Keep-Alive");
    conn.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    // 发送POST请求必须设置如下两行
    conn.setDoOutput(true);
    conn.setDoInput(true);
    // 获取URLConnection对象对应的输出流
    out = new PrintWriter(conn.getOutputStream());
    // 发送请求参数
    out.print(params);  //②
    // flush输出流的缓冲
    out.flush();
    // 定义BufferedReader输入流来读取URL的响应
    in = new BufferedReader(
    new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = in.readLine()) != null)
    {
    result += "\n" + line;
    }
    }
    catch (Exception e)
    {
    System.out.println("发送POST请求出现异常!" + e);
    e.printStackTrace();
    }
    // 使用finally块来关闭输出流、输入流
    finally
    {
    try
    {
    if (out != null)
    {
    out.close();
    }
    if (in != null)
    {
    in.close();
    }
    }
    catch (IOException ex)
    {
    ex.printStackTrace();
    }
    }
    return result;
    }
    }
      

  2.   

    /**
         * 根据url获得页面源码
         * @param url 访问地址, 必备参数
         * @param method 请求方式post还是get, 默认get
         * @param params 参数列表 post必备, 比如:"name=张三&age=18"
         * @param sessionInfo 可以保持session, 默认不保持
         * @param encoding 编码格式, 默认UTF_8
         * @param isLine 得到的源码是否换行, 默认false
         * @return
         */
    public String sound(String url, String method, String params, String sessionInfo, String encoding, boolean isLine) throws Exception {
    Log.e("AbstractActivity", "调用web接口:" + url);
    encoding = (isBlank(encoding) ? HTTP.UTF_8 : encoding);
    method = (isBlank(method) ? Domain.REQUEST_GET : method.toUpperCase());
    String mathStr = "mathRandom=" + Math.random();
    if (method.equals(Domain.REQUEST_GET)) {url += (url.indexOf("?") != -1 ? "&" : "?") + mathStr;}
    HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
    if (!isBlank(sessionInfo)) {conn.setRequestProperty("Cookie", sessionInfo);}
    conn.setRequestMethod(method);
    if (requestTime > 0) {
    conn.setConnectTimeout(requestTime);
    conn.setReadTimeout(requestTime);
    }
    if (method.equals(Domain.REQUEST_POST)) {
    conn.setDoOutput(true);
    OutputStream output = conn.getOutputStream(); 
    output.write((isBlank(params) ? mathStr : params + "&" + mathStr).getBytes(encoding)); 
    output.flush();output.close();
    }
    String response = FileUtil.get().readFile(conn.getInputStream(), encoding, 1, isLine);
    conn.disconnect();
    requestTime = Domain.LONG_REQUEST_TIME;
    return response;
    }
      

  3.   

    System.out.println("发送GET请求出现异常!" + e);  我们要看的是这里抓到的异常
      

  4.   

    System.out.println("发送GET请求出现异常!" + e);  我们要看的是这里抓到的异常谢谢
    01-15 07:22:41.928: I/System.out(759): 发送POST请求出现异常!android.os.NetworkOnMainThreadException
    01-15 07:22:41.928: W/System.err(759): android.os.NetworkOnMainThreadException
    01-15 07:22:41.938: W/System.err(759):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
    01-15 07:22:41.938: W/System.err(759):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
    01-15 07:22:41.948: W/System.err(759):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
    01-15 07:22:41.948: W/System.err(759):  at libcore.io.IoBridge.connect(IoBridge.java:112)
    01-15 07:22:41.948: W/System.err(759):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
    01-15 07:22:41.948: W/System.err(759):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
    01-15 07:22:41.985: W/System.err(759):  at java.net.Socket.connect(Socket.java:842)
    01-15 07:22:41.985: W/System.err(759):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)
    01-15 07:22:41.988: W/System.err(759):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
    01-15 07:22:41.988: W/System.err(759):  at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341)
    01-15 07:22:41.988: W/System.err(759):  at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
    01-15 07:22:41.988: W/System.err(759):  at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188)
    01-15 07:22:42.008: W/System.err(759):  at com.entity.GetPostUtil.sendPost(GetPostUtil.java:106)
    01-15 07:22:42.008: W/System.err(759):  at com.entity.GetJson.jsonType(GetJson.java:166)
    01-15 07:22:42.008: W/System.err(759):  at com.example.photowallfallsdemo.ImagesBIL.imageUrlsOfBIL(ImagesBIL.java:9)
    01-15 07:22:42.008: W/System.err(759):  at com.example.photowallfallsdemo.MyScrollViewBIL.loadMoreImages(MyScrollViewBIL.java:201)
    01-15 07:22:42.008: W/System.err(759):  at com.example.photowallfallsdemo.MyScrollViewBIL$1.handleMessage(MyScrollViewBIL.java:137)
    01-15 07:22:42.008: W/System.err(759):  at android.os.Handler.dispatchMessage(Handler.java:99)
    01-15 07:22:42.019: W/System.err(759):  at android.os.Looper.loop(Looper.java:137)
    01-15 07:22:42.019: W/System.err(759):  at android.app.ActivityThread.main(ActivityThread.java:4745)
    01-15 07:22:42.019: W/System.err(759):  at java.lang.reflect.Method.invokeNative(Native Method)
    01-15 07:22:42.019: W/System.err(759):  at java.lang.reflect.Method.invoke(Method.java:511)
    01-15 07:22:42.019: W/System.err(759):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    01-15 07:22:42.019: W/System.err(759):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    01-15 07:22:42.028: W/System.err(759):  at dalvik.system.NativeStart.main(Native Method)
    01-15 07:22:42.028: W/System.err(759): org.json.JSONException: End of input at character 0 of 
    01-15 07:22:42.028: W/System.err(759):  at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
    01-15 07:22:42.038: W/System.err(759):  at org.json.JSONTokener.nextValue(JSONTokener.java:97)
    01-15 07:22:42.038: W/System.err(759):  at org.json.JSONArray.<init>(JSONArray.java:87)
    01-15 07:22:42.038: W/System.err(759):  at org.json.JSONArray.<init>(JSONArray.java:103)
    01-15 07:22:42.038: W/System.err(759):  at com.entity.GetJson.jsonType(GetJson.java:170)
    01-15 07:22:42.038: W/System.err(759):  at com.example.photowallfallsdemo.ImagesBIL.imageUrlsOfBIL(ImagesBIL.java:9)
    01-15 07:22:42.048: W/System.err(759):  at com.example.photowallfallsdemo.MyScrollViewBIL.loadMoreImages(MyScrollViewBIL.java:201)
    01-15 07:22:42.048: W/System.err(759):  at com.example.photowallfallsdemo.MyScrollViewBIL$1.handleMessage(MyScrollViewBIL.java:137)
    01-15 07:22:42.048: W/System.err(759):  at android.os.Handler.dispatchMessage(Handler.java:99)
    01-15 07:22:42.058: W/System.err(759):  at android.os.Looper.loop(Looper.java:137)
    01-15 07:22:42.079: W/System.err(759):  at android.app.ActivityThread.main(ActivityThread.java:4745)
    01-15 07:22:42.079: W/System.err(759):  at java.lang.reflect.Method.invokeNative(Native Method)
    01-15 07:22:42.079: W/System.err(759):  at java.lang.reflect.Method.invoke(Method.java:511)
    01-15 07:22:42.079: W/System.err(759):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    01-15 07:22:42.079: W/System.err(759):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    01-15 07:22:42.079: W/System.err(759):  at dalvik.system.NativeStart.main(Native Method)
    01-15 07:22:42.079: I/System.out(759): 0
    01-15 07:22:42.098: I/System.out(759): []
    01-15 07:22:44.657: D/com.umeng.common.b(759): Could not get location from GPS or Cell-id, lack ACCESS_COARSE_LOCATION or ACCESS_COARSE_LOCATION permission?
      

  5.   

    01-15 07:22:41.928: I/System.out(759): 发送POST请求出现异常!android.os.NetworkOnMainThreadException
    01-15 07:22:41.928: W/System.err(759): android.os.NetworkOnMainThreadException
    01-15 07:22:41.938: W/System.err(759):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
    01-15 07:22:41.938: W/System.err(759):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
    01-15 07:22:41.948: W/System.err(759):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
    01-15 07:22:41.948: W/System.err(759):  at libcore.io.IoBridge.connect(IoBridge.java:112)
    01-15 07:22:41.948: W/System.err(759):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
    01-15 07:22:41.948: W/System.err(759):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
    01-15 07:22:41.985: W/System.err(759):  at java.net.Socket.connect(Socket.java:842)
    01-15 07:22:41.985: W/System.err(759):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)
    01-15 07:22:41.988: W/System.err(759):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
    01-15 07:22:41.988: W/System.err(759):  at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341)
    01-15 07:22:41.988: W/System.err(759):  at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
    01-15 07:22:41.988: W/System.err(759):  at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
    01-15 07:22:41.998: W/System.err(759):  at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188)
    01-15 07:22:42.008: W/System.err(759):  at com.entity.GetPostUtil.sendPost(GetPostUtil.java:106)
    01-15 07:22:42.008: W/System.err(759):  at com.entity.GetJson.jsonType(GetJson.java:166)
    01-15 07:22:42.008: W/System.err(759):  at com.example.photowallfallsdemo.ImagesBIL.imageUrlsOfBIL(ImagesBIL.java:9)
    01-15 07:22:42.008: W/System.err(759):  at com.example.photowallfallsdemo.MyScrollViewBIL.loadMoreImages(MyScrollViewBIL.java:201)
    01-15 07:22:42.008: W/System.err(759):  at com.example.photowallfallsdemo.MyScrollViewBIL$1.handleMessage(MyScrollViewBIL.java:137)
    01-15 07:22:42.008: W/System.err(759):  at android.os.Handler.dispatchMessage(Handler.java:99)
    01-15 07:22:42.019: W/System.err(759):  at android.os.Looper.loop(Looper.java:137)
    01-15 07:22:42.019: W/System.err(759):  at android.app.ActivityThread.main(ActivityThread.java:4745)
    01-15 07:22:42.019: W/System.err(759):  at java.lang.reflect.Method.invokeNative(Native Method)
    01-15 07:22:42.019: W/System.err(759):  at java.lang.reflect.Method.invoke(Method.java:511)
    01-15 07:22:42.019: W/System.err(759):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    01-15 07:22:42.019: W/System.err(759):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    01-15 07:22:42.028: W/System.err(759):  at dalvik.system.NativeStart.main(Native Method)
    01-15 07:22:42.028: W/System.err(759): org.json.JSONException: End of input at character 0 of 
    01-15 07:22:42.028: W/System.err(759):  at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
    01-15 07:22:42.038: W/System.err(759):  at org.json.JSONTokener.nextValue(JSONTokener.java:97)
    01-15 07:22:42.038: W/System.err(759):  at org.json.JSONArray.<init>(JSONArray.java:87)
    01-15 07:22:42.038: W/System.err(759):  at org.json.JSONArray.<init>(JSONArray.java:103)
    01-15 07:22:42.038: W/System.err(759):  at com.entity.GetJson.jsonType(GetJson.java:170)
    01-15 07:22:42.038: W/System.err(759):  at com.example.photowallfallsdemo.ImagesBIL.imageUrlsOfBIL(ImagesBIL.java:9)
    01-15 07:22:42.048: W/System.err(759):  at com.example.photowallfallsdemo.MyScrollViewBIL.loadMoreImages(MyScrollViewBIL.java:201)
    01-15 07:22:42.048: W/System.err(759):  at com.example.photowallfallsdemo.MyScrollViewBIL$1.handleMessage(MyScrollViewBIL.java:137)
    01-15 07:22:42.048: W/System.err(759):  at android.os.Handler.dispatchMessage(Handler.java:99)
    01-15 07:22:42.058: W/System.err(759):  at android.os.Looper.loop(Looper.java:137)
    01-15 07:22:42.079: W/System.err(759):  at android.app.ActivityThread.main(ActivityThread.java:4745)
    01-15 07:22:42.079: W/System.err(759):  at java.lang.reflect.Method.invokeNative(Native Method)
    01-15 07:22:42.079: W/System.err(759):  at java.lang.reflect.Method.invoke(Method.java:511)
    01-15 07:22:42.079: W/System.err(759):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    01-15 07:22:42.079: W/System.err(759):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    01-15 07:22:42.079: W/System.err(759):  at dalvik.system.NativeStart.main(Native Method)
    01-15 07:22:42.079: I/System.out(759): 0
    01-15 07:22:42.098: I/System.out(759): []
    01-15 07:22:44.657: D/com.umeng.common.b(759): Could not get location from GPS or Cell-id, lack ACCESS_COARSE_LOCATION or ACCESS_COARSE_LOCATION permission?
      

  6.   

    new Thread(new Runable() {
    @Override
    public void run() {
    //这里面发送代码
    }
    }).start();
      

  7.   

    请问我具体需要怎么新建一个线程写啊?谢谢你的请求方法是哪个就放在我给你标记的地方!但是这儿样有错误啊, new Thread(new Runnable() {

    public void run() {


    public static String sendGet(String url, String params)
    {
    String result = "";
    BufferedReader in = null;
    try
    {
    String urlName = url + "?" + params;
    URL realUrl = new URL(urlName);
    // 打开和URL之间的连接
    URLConnection conn = realUrl.openConnection();
    // 设置通用的请求属性
    conn.setRequestProperty("accept","*/*");
    conn.setRequestProperty("connection", "Keep-Alive");
    conn.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    // 建立实际的连接
    conn.connect();  //①
    // 获取所有响应头字段
    Map<String, List<String>> map = conn.getHeaderFields();
    // 遍历所有的响应头字段
    for (String key : map.keySet())
    {
    System.out.println(key + "--->" + map.get(key));
    }
    // 定义BufferedReader输入流来读取URL的响应
    in = new BufferedReader(
    new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = in.readLine()) != null)
    {
    result += "\n" + line;
    }
    }
    catch (Exception e)
    {
    System.out.println("发送GET请求出现异常!" + e);
    e.printStackTrace();
    }
    // 使用finally块来关闭输入流
    finally
    {
    try
    {
    if (in != null)
    {
    in.close();
    }
    }
    catch (IOException ex)
    {
    ex.printStackTrace();
    }
    }
    return result;
    }
    }
    }).start();
      

  8.   

    你要使用异步发送post.而不是在主线程
      

  9.   

    请问我具体需要怎么新建一个线程写啊?谢谢你的请求方法是哪个就放在我给你标记的地方!请问你的意思是我需要在使用这个方法的时候new一个线程?还是定义这个方法的时候就把他放在线程中啊?
      

  10.   

    请问我是在使用方法的时候new一个线程还是在定义这个post请求方法的时候就new一个线程啊?
      

  11.   

    请问我具体需要怎么新建一个线程写啊?谢谢你的请求方法是哪个就放在我给你标记的地方!但是这儿样有错误啊, new Thread(new Runnable() {

    public void run() {


    public static String sendGet(String url, String params)
    {
    String result = "";
    BufferedReader in = null;
    try
    {
    String urlName = url + "?" + params;
    URL realUrl = new URL(urlName);
    // 打开和URL之间的连接
    URLConnection conn = realUrl.openConnection();
    // 设置通用的请求属性
    conn.setRequestProperty("accept","*/*");
    conn.setRequestProperty("connection", "Keep-Alive");
    conn.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    // 建立实际的连接
    conn.connect();  //①
    // 获取所有响应头字段
    Map<String, List<String>> map = conn.getHeaderFields();
    // 遍历所有的响应头字段
    for (String key : map.keySet())
    {
    System.out.println(key + "--->" + map.get(key));
    }
    // 定义BufferedReader输入流来读取URL的响应
    in = new BufferedReader(
    new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = in.readLine()) != null)
    {
    result += "\n" + line;
    }
    }
    catch (Exception e)
    {
    System.out.println("发送GET请求出现异常!" + e);
    e.printStackTrace();
    }
    // 使用finally块来关闭输入流
    finally
    {
    try
    {
    if (in != null)
    {
    in.close();
    }
    }
    catch (IOException ex)
    {
    ex.printStackTrace();
    }
    }
    return result;
    }
    }
    }).start();
      

  12.   

    请问我具体需要怎么新建一个线程写啊?谢谢你的请求方法是哪个就放在我给你标记的地方!请问你的意思是我需要在使用这个方法的时候new一个线程?还是定义这个方法的时候就把他放在线程中啊?使用时new一个线程!
      

  13.   

    请问我具体需要怎么新建一个线程写啊?谢谢你的请求方法是哪个就放在我给你标记的地方!但是这儿样有错误啊, new Thread(new Runnable() {

    public void run() {


    public static String sendGet(String url, String params)
    {
    String result = "";
    BufferedReader in = null;
    try
    {
    String urlName = url + "?" + params;
    URL realUrl = new URL(urlName);
    // 打开和URL之间的连接
    URLConnection conn = realUrl.openConnection();
    // 设置通用的请求属性
    conn.setRequestProperty("accept","*/*");
    conn.setRequestProperty("connection", "Keep-Alive");
    conn.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    // 建立实际的连接
    conn.connect();  //①
    // 获取所有响应头字段
    Map<String, List<String>> map = conn.getHeaderFields();
    // 遍历所有的响应头字段
    for (String key : map.keySet())
    {
    System.out.println(key + "--->" + map.get(key));
    }
    // 定义BufferedReader输入流来读取URL的响应
    in = new BufferedReader(
    new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = in.readLine()) != null)
    {
    result += "\n" + line;
    }
    }
    catch (Exception e)
    {
    System.out.println("发送GET请求出现异常!" + e);
    e.printStackTrace();
    }
    // 使用finally块来关闭输入流
    finally
    {
    try
    {
    if (in != null)
    {
    in.close();
    }
    }
    catch (IOException ex)
    {
    ex.printStackTrace();
    }
    }
    return result;
    }
    }
    }).start();恩谢谢,豁然开朗,不过我该怎么得到这个新的方法中的返回值呢?我需要sendPost返回的String,我是新手,求教
      

  14.   

    请问我具体需要怎么新建一个线程写啊?谢谢你的请求方法是哪个就放在我给你标记的地方!但是这儿样有错误啊, new Thread(new Runnable() {

    public void run() {


    public static String sendGet(String url, String params)
    {
    String result = "";
    BufferedReader in = null;
    try
    {
    String urlName = url + "?" + params;
    URL realUrl = new URL(urlName);
    // 打开和URL之间的连接
    URLConnection conn = realUrl.openConnection();
    // 设置通用的请求属性
    conn.setRequestProperty("accept","*/*");
    conn.setRequestProperty("connection", "Keep-Alive");
    conn.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    // 建立实际的连接
    conn.connect();  //①
    // 获取所有响应头字段
    Map<String, List<String>> map = conn.getHeaderFields();
    // 遍历所有的响应头字段
    for (String key : map.keySet())
    {
    System.out.println(key + "--->" + map.get(key));
    }
    // 定义BufferedReader输入流来读取URL的响应
    in = new BufferedReader(
    new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = in.readLine()) != null)
    {
    result += "\n" + line;
    }
    }
    catch (Exception e)
    {
    System.out.println("发送GET请求出现异常!" + e);
    e.printStackTrace();
    }
    // 使用finally块来关闭输入流
    finally
    {
    try
    {
    if (in != null)
    {
    in.close();
    }
    }
    catch (IOException ex)
    {
    ex.printStackTrace();
    }
    }
    return result;
    }
    }
    }).start();恩谢谢,豁然开朗,不过我该怎么得到这个新的方法中的返回值呢?我需要sendPost返回的String,我是新手,求教而且,按照您的这个方法,在mySendGet方法需要传值进来的啊
      

  15.   

    但是我在使用时new一个线程以后,得到的这个字符串,外面无法使用啊public List<FilesEntity> jsonType(String type){
    List<FilesEntity> filesEntities = new ArrayList<FilesEntity>();
    String params = "type=\""+type+"\"";
    String url = "http://223.4.209.189:7778/androidServlet/servlet/TypeServlet";
    new Thread(new Runnable() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    String finish = GetPostUtil.sendPost(url, params);
    }
    }).start();

    JSONArray jsonArray = new JSONArray();
    System.out.println(finish);
      

  16.   

    请问我具体需要怎么新建一个线程写啊?谢谢你的请求方法是哪个就放在我给你标记的地方!但是这儿样有错误啊, new Thread(new Runnable() {

    public void run() {


    public static String sendGet(String url, String params)
    {
    String result = "";
    BufferedReader in = null;
    try
    {
    String urlName = url + "?" + params;
    URL realUrl = new URL(urlName);
    // 打开和URL之间的连接
    URLConnection conn = realUrl.openConnection();
    // 设置通用的请求属性
    conn.setRequestProperty("accept","*/*");
    conn.setRequestProperty("connection", "Keep-Alive");
    conn.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    // 建立实际的连接
    conn.connect();  //①
    // 获取所有响应头字段
    Map<String, List<String>> map = conn.getHeaderFields();
    // 遍历所有的响应头字段
    for (String key : map.keySet())
    {
    System.out.println(key + "--->" + map.get(key));
    }
    // 定义BufferedReader输入流来读取URL的响应
    in = new BufferedReader(
    new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = in.readLine()) != null)
    {
    result += "\n" + line;
    }
    }
    catch (Exception e)
    {
    System.out.println("发送GET请求出现异常!" + e);
    e.printStackTrace();
    }
    // 使用finally块来关闭输入流
    finally
    {
    try
    {
    if (in != null)
    {
    in.close();
    }
    }
    catch (IOException ex)
    {
    ex.printStackTrace();
    }
    }
    return result;
    }
    }
    }).start();恩谢谢,豁然开朗,不过我该怎么得到这个新的方法中的返回值呢?我需要sendPost返回的String,我是新手,求教定义一个全局变量,用那个变量来接受!
      

  17.   

    请看我在程序中写的注释,现在最后一个问题,谢谢
    public String finish="";
    public String responseResult(String url,String params) {
    GetPostUtil test = new GetPostUtil();
    finish=test.sendPost(url, params);
    System.out.println("finish="+finish);//这里的finish有从服务器得到的字符串值,但是后面的输出,finish就是空的了
    return finish;

    }

    public List<FilesEntity> jsonType(String type){
    List<FilesEntity> filesEntities = new ArrayList<FilesEntity>();
    final String params = "type=\""+type+"\"";
    final String url = "http://223.4.209.189:7778/androidServlet/servlet/TypeServlet";
    new Thread(new Runnable() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    responseResult(url, params);
    }
    }).start();
    System.out.println("finish="+finish);//这里就是空的了
      

  18.   

    请看我在程序中写的注释,现在最后一个问题,谢谢
    public String finish="";
    public String responseResult(String url,String params) {
    GetPostUtil test = new GetPostUtil();
    finish=test.sendPost(url, params);
    System.out.println("finish="+finish);//这里的finish有从服务器得到的字符串值,但是后面的输出,finish就是空的了
    return finish;

    }

    public List<FilesEntity> jsonType(String type){
    List<FilesEntity> filesEntities = new ArrayList<FilesEntity>();
    final String params = "type=\""+type+"\"";
    final String url = "http://223.4.209.189:7778/androidServlet/servlet/TypeServlet";
    new Thread(new Runnable() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    responseResult(url, params);
    }
    }).start();
    System.out.println("finish="+finish);//这里就是空的了定义一个内部线程内操作吧!
      

  19.   

    请看我在程序中写的注释,现在最后一个问题,谢谢
    public String finish="";
    public String responseResult(String url,String params) {
    GetPostUtil test = new GetPostUtil();
    finish=test.sendPost(url, params);
    System.out.println("finish="+finish);//这里的finish有从服务器得到的字符串值,但是后面的输出,finish就是空的了
    return finish;

    }

    public List<FilesEntity> jsonType(String type){
    List<FilesEntity> filesEntities = new ArrayList<FilesEntity>();
    final String params = "type=\""+type+"\"";
    final String url = "http://223.4.209.189:7778/androidServlet/servlet/TypeServlet";
    new Thread(new Runnable() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    responseResult(url, params);
    }
    }).start();
    System.out.println("finish="+finish);//这里就是空的了定义一个内部线程内操作吧!意思就是说我可以在changeValue这个内部类中操作么?我只知道内部类可以减少生成对象的数量,请告诉我具体怎么操作呀?下面我按照你的方法,写的程序,请问我需要怎么改啊,进入线程之后,出来的finish依然没有值
      

  20.   

    内部类里面那个run方法不是随便敲的!是实现的!方法最左边有个三角符号的话 那个表示你这个方法正确实现了,我看你这个方法上面也没有@override ,所以我这样说!如果你是正确的实现了方法,依然这样,我也没办法了,我测试正常!
      

  21.   

    请看我在程序中写的注释,现在最后一个问题,谢谢
    public String finish="";
    public String responseResult(String url,String params) {
    GetPostUtil test = new GetPostUtil();
    finish=test.sendPost(url, params);
    System.out.println("finish="+finish);//这里的finish有从服务器得到的字符串值,但是后面的输出,finish就是空的了
    return finish;

    }

    public List<FilesEntity> jsonType(String type){
    List<FilesEntity> filesEntities = new ArrayList<FilesEntity>();
    final String params = "type=\""+type+"\"";
    final String url = "http://223.4.209.189:7778/androidServlet/servlet/TypeServlet";
    new Thread(new Runnable() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    responseResult(url, params);
    }
    }).start();
    System.out.println("finish="+finish);//这里就是空的了定义一个内部线程内操作吧!意思就是说我可以在changeValue这个内部类中操作么?我只知道内部类可以减少生成对象的数量,请告诉我具体怎么操作呀?下面我按照你的方法,写的程序,请问我需要怎么改啊,进入线程之后,出来的finish依然没有值内部类里面那个run方法不是随便敲的!是实现的!方法最左边有个三角符号的话 那个表示你这个方法正确实现了,我看你这个方法上面也没有@override ,所以我这样说!如果你是正确的实现了方法,依然这样,我也没办法了,我测试正常!
      

  22.   

    为啥这句打印System.out.println("jjjjjj" + finish);
    finish没有值? 
    那是因为你线程还没有执行完毕,也就是子线程myThread的run函数还没有返回finish的值,而主线程就已经打印了finish,那么finish的值当然还是空了。
      

  23.   

    所以你这里必须串行处理,要么就线程同步(不建议这么做),就直接串行走
    finish = responseResult(turl, tparams);
    和jsonArray = new JSONArray(finish);都放在子线程中执行。
    这样的话,你的代码要稍微调整一下
      

  24.   

    请问我是在使用方法的时候new一个线程还是在定义这个post请求方法的时候就new一个线程啊?你可以看看AsyncTask这个异步可以提供你想实现的方式