Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有HttpClient和AsyncHttpClient的Android HTTP请求_Android_Apache_Http_Androidhttpclient - Fatal编程技术网

带有HttpClient和AsyncHttpClient的Android HTTP请求

带有HttpClient和AsyncHttpClient的Android HTTP请求,android,apache,http,androidhttpclient,Android,Apache,Http,Androidhttpclient,我正在开发一个android应用程序,它向php文件发出HTTP请求,然后给我一个字符串。该代码在Android2.x及更低版本中运行良好,但当我在更高版本的AndroidOS中运行时,它会崩溃。 我在清单文件中拥有所有必要的权限 这是我的密码: getData data; String result; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我正在开发一个android应用程序,它向php文件发出HTTP请求,然后给我一个字符串。该代码在Android2.x及更低版本中运行良好,但当我在更高版本的AndroidOS中运行时,它会崩溃。 我在清单文件中拥有所有必要的权限

这是我的密码:

 getData data;
 String result;

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    data = new getData("http://alexanderpadin.uphero.com/copyDataBase.php");
    result = data.getResult();

    Log.i("Data", result);
  }
和我的getData类:

 package com.application.uprm_map;

 import java.io.InputStream;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.DefaultHttpClient;
 import android.util.Log;

 public class getData {

     private String result;
     private InputStream is;
     private StringBuilder sb;

     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

     public getData(String url){
         try{
             HttpClient httpclient = new DefaultHttpClient();
              HttpPost httppost = new HttpPost(url);
              httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
              HttpResponse response = httpclient.execute(httppost);
              HttpEntity entity = response.getEntity();
              is = entity.getContent();
              }catch(Exception e){
                  Log.e("log_tag", "Error in http connection "+e.toString());
                  }
         try{
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
             sb = new StringBuilder();
             sb.append(reader.readLine() + "\n");

             String line="0";
             while ((line = reader.readLine()) != null) {
                 sb.append(line + "\n");
             }
             is.close();
             result = sb.toString();
             }catch(Exception e){
                 Log.e("log_tag", "Error converting result "+e.toString());
             }
     }
     public String getResult(){
         return result;
     }
 }  
我还尝试使用此软件包::

代码如下:

       String result; 

       protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.activity_main);

               AsyncHttpClient client = new AsyncHttpClient();
               client.get("http://alexanderpadin.uphero.com/copyDataBase", new AsyncHttpResponseHandler() {
                   @Override
                   public void onSuccess(String response) {
                       result = response;
                   }
               });

               log.i("Data", result);
       }
当我试图在函数onSuccess中打印响应变量时,它会工作,但当我试图让该变量执行其他操作时,它就不工作了

日志:

04-17 01:29:43.593: E/Trace(13235): error opening trace file: No such file or directory (2)
04-17 01:29:44.118: E/log_tag(13235): Error in http connection android.os.NetworkOnMainThreadException
04-17 01:29:44.118: E/log_tag(13235): Error converting result java.lang.NullPointerException: lock == null
04-17 01:29:44.133: E/AndroidRuntime(13235): FATAL EXCEPTION: main
04-17 01:29:44.133: E/AndroidRuntime(13235): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.application.uprm_map/com.application.uprm_map.MainActivity}: java.lang.NullPointerException: println needs a message
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.app.ActivityThread.access$600(ActivityThread.java:153)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.os.Looper.loop(Looper.java:137)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.app.ActivityThread.main(ActivityThread.java:5226)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at java.lang.reflect.Method.invokeNative(Native Method)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at java.lang.reflect.Method.invoke(Method.java:511)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at dalvik.system.NativeStart.main(Native Method)
04-17 01:29:44.133: E/AndroidRuntime(13235): Caused by: java.lang.NullPointerException: println needs a message
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.util.Log.println_native(Native Method)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.util.Log.i(Log.java:159)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at com.application.uprm_map.MainActivity.onCreate(MainActivity.java:64)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.app.Activity.performCreate(Activity.java:5104)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-17 01:29:44.133: E/AndroidRuntime(13235):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
04-17 01:29:44.133: E/AndroidRuntime(13235):    ... 11 more
04-17 01:22:11.358: E/Trace(12475): error opening trace file: No such file or directory (2)
04-17 01:22:26.103: E/Trace(12710): error opening trace file: No such file or directory (2)
04-17 01:22:26.618: E/AndroidRuntime(12710): FATAL EXCEPTION: main
04-17 01:22:26.618: E/AndroidRuntime(12710): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.application.uprm_map/com.application.uprm_map.MainActivity}: java.lang.NullPointerException: println needs a message
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.app.ActivityThread.access$600(ActivityThread.java:153)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.os.Looper.loop(Looper.java:137)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.app.ActivityThread.main(ActivityThread.java:5226)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at java.lang.reflect.Method.invokeNative(Native Method)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at java.lang.reflect.Method.invoke(Method.java:511)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at dalvik.system.NativeStart.main(Native Method)
04-17 01:22:26.618: E/AndroidRuntime(12710): Caused by: java.lang.NullPointerException: println needs a message
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.util.Log.println_native(Native Method)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.util.Log.i(Log.java:159)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at com.application.uprm_map.MainActivity.onCreate(MainActivity.java:69)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.app.Activity.performCreate(Activity.java:5104)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-17 01:22:26.618: E/AndroidRuntime(12710):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
04-17 01:22:26.618: E/AndroidRuntime(12710):    ... 11 more
我的代码中缺少什么吗?有人能帮我做到这一点吗?我将感激任何帮助。
谢谢。

你撞车是因为

 Log.i("Data", result);
更正为:

Log.i("Data", ""+result);

而不仅仅是检查结果为什么为空。一些操作系统版本无法读取401响应消息,需要一个黑客来执行此操作

****发现问题的地方是一个链接,该链接解释了问题的具体原因。