致命异常:AsyncTask#2(将android连接到服务器失败)
我正在尝试将我的android应用程序连接到服务器,以便使用PHP和SQL发送和检索数据。我在android异步任务中使用了这段代码致命异常:AsyncTask#2(将android连接到服务器失败),android,android-asynctask,Android,Android Asynctask,我正在尝试将我的android应用程序连接到服务器,以便使用PHP和SQL发送和检索数据。我在android异步任务中使用了这段代码 protected String doInBackground(String... params) { String sender=params[0]; String receipent=params[1]; String mess=params[2]; try { U
protected String doInBackground(String... params) {
String sender=params[0];
String receipent=params[1];
String mess=params[2];
try {
URL url=new URL("http://muzamilbukhari.******/******.php");
HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
OutputStream outputStream=httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(outputStream));
String info= URLEncoder.encode("from","UTF-8")+"="+URLEncoder.encode(sender,"UTF-8")+"&"+URLEncoder.encode("to","UTF-8")+"="+
URLEncoder.encode(receipent,"UTF-8")+"&"+URLEncoder.encode("message","UTF-8")+"="+URLEncoder.encode(mess,"UTF-8");
bufferedWriter.write(info);
bufferedWriter.flush();
outputStream.close();
bufferedWriter.close();
InputStream inputStream=httpURLConnection.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line=bufferedReader.readLine())!=null){
result+=line;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
但它有时起作用,但下一刻就不起作用了。我遇到以下错误:
以下是Logcat:
--------- beginning of crash
07-25 11:53:46.209 2851-2910/com.example.muzamil.chatapp E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
Process: com.example.muzamil.chatapp, PID: 2851
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at com.example.muzamil.chatapp.Utility.parse(Utility.java:9)
at com.example.muzamil.chatapp.MainActivity$LoginData.doInBackground(MainActivity.java:101)
at com.example.muzamil.chatapp.MainActivity$LoginData.doInBackground(MainActivity.java:55)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
07-25 11:53:46.619 2851-2908/com.example.muzamil.chatapp E/Surface:getSlotFromBufferLocked:未知缓冲区:0xaa2a10e0
[ 07-25 11:53:46.657 1556: 6510 D/ ]
HostConnection::get() New Host Connection established 0x9eb91020, tid 6510
07-25 11:56:02.018 2851-2857/com.example.muzamil.chatapp W/art:暂停所有线程耗时:11.490ms将logcat添加为文本而不是图像OK现在已添加logcat。请帮助您的问题是由空引用引起的,
在空对象引用上调用虚拟方法“int java.lang.String.length()”
主要是这个类/方法/行号com.example.muzamil.chatapp.Utility.parse(Utility.java:9)
您正在使用的.length()
在空对象服务器上,它有时响应,有时不响应,并返回一个空对象,这会导致错误。我的问题是为什么它有时发送空对象(不总是)?这有很多可能性,可能是连接超时,所以YOUR对象仍然为空,但我无法在您发布的日志中看到这一点,除非您遗漏了其中的一部分,可能是服务器上的异常导致进程在填充数据并将其发送回客户端之前停止,服务器异常可能有许多原因,也就是说,您可以检查http响应代码是否为200,并在尝试访问对象之前检查对象是否为空。将logcat添加为文本而不是图像现在已添加logcat。请帮助您的问题是由空引用引起的,在空对象引用上调用虚拟方法“int java.lang.String.length()”
主要是这个类/方法/行号com.example.muzamil.chatapp.Utility.parse(Utility.java:9)
您正在使用的.length()
在空对象服务器上,它有时响应,有时不响应,并返回一个空对象,这会导致错误。我的问题是为什么它有时发送空对象(不总是)?这有很多可能性,可能是连接超时,所以YOUR对象仍然为空,但我无法在您发布的日志中看到这一点,除非您遗漏了其中的一部分,服务器上的异常可能会导致进程在填充数据并将其发送回客户端之前停止。服务器异常可能有很多原因,也就是说,您可以检查http响应代码是否为200,并在尝试访问对象之前检查对象是否为空。