Java 致命异常异步任务#2我做错了什么?
我有一个查找VIN的php/mysql查询,如果VIN在数据库中,它会返回“VIN已存在”,我在这个错误报告中哪里出错了:错误报告说Java 致命异常异步任务#2我做错了什么?,java,android,Java,Android,我有一个查找VIN的php/mysql查询,如果VIN在数据库中,它会返回“VIN已存在”,我在这个错误报告中哪里出错了:错误报告说Fatal Exception:AsyncTask#2(我有一些代码实际上可以解决这个问题,当我试图在启动Sell页面之前重写它以运行php checkVin时,问题就开始了) 11-21 16:34:43.736:E/AndroidRuntime(725):致命异常:AsyncTask#2 11-21 16:34:43.736:E/AndroidRuntime(7
Fatal Exception:AsyncTask#2
(我有一些代码实际上可以解决这个问题,当我试图在启动Sell页面之前重写它以运行php checkVin时,问题就开始了)
11-21 16:34:43.736:E/AndroidRuntime(725):致命异常:AsyncTask#2
11-21 16:34:43.736:E/AndroidRuntime(725):java.lang.RuntimeException:执行doInBackground()时出错
11-21 16:34:43.736:E/AndroidRuntime(725):在android.os.AsyncTask$3.done(AsyncTask.java:299)
11-21 16:34:43.736:E/AndroidRuntime(725):位于java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
11-21 16:34:43.736:E/AndroidRuntime(725):在java.util.concurrent.FutureTask.setException(FutureTask.java:124)
11-21 16:34:43.736:E/AndroidRuntime(725):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
11-21 16:34:43.736:E/AndroidRuntime(725):在java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-21 16:34:43.736:E/AndroidRuntime(725):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-21 16:34:43.736:E/AndroidRuntime(725):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
11-21 16:34:43.736:E/AndroidRuntime(725):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
11-21 16:34:43.736:E/AndroidRuntime(725):在java.lang.Thread.run(Thread.java:856)
11-21 16:34:43.736:E/AndroidRuntime(725):由以下原因引起:java.lang.IllegalArgumentException:主机名不能为null
11-21 16:34:43.736:E/AndroidRuntime(725):位于org.apache.http.HttpHost.(HttpHost.java:83)
11-21 16:34:43.736:E/AndroidRuntime(725):位于org.apache.http.impl.client.AbstractHttpClient.DeterminateTarget(AbstractHttpClient.java:497)
11-21 16:34:43.736:E/AndroidRuntime(725):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:626)
11-21 16:34:43.736:E/AndroidRuntime(725):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
11-21 16:34:43.736:E/AndroidRuntime(725):在com.mobile.donswholesale.Scan.getServerResopnse(Scan.java:272)
11-21 16:34:43.736:E/AndroidRuntime(725):在com.mobile.donswholesale.Scan.access$1(Scan.java:260)
11-21 16:34:43.736:E/AndroidRuntime(725):在com.mobile.donswholesale.Scan$4.doInBackground(Scan.java:240)
11-21 16:34:43.736:E/AndroidRuntime(725):在com.mobile.donswholesale.Scan$4.doInBackground(Scan.java:1)
11-21 16:34:43.736:E/AndroidRuntime(725):在android.os.AsyncTask$2.call(AsyncTask.java:287)
11-21 16:34:43.736:E/AndroidRuntime(725):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
11-2116:34:43.736:E/AndroidRuntime(725):…还有5个
private void addSellButtonListener(){
按钮销售=(按钮)findViewById(R.id.sell\u按钮);
sell.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
sendDatatoServer();
}
});
}
私有字符串格式DataAsJason(){
JSONObject root=新的JSONObject();
试一试{
root.put(“User”,userId.getText().toString());
root.put(“Pword”,userPass.getText().toString());
root.put(“VIN”,VINID.getText().toString());
返回root.toString();
}捕获(JSONException e){
d(“JWP”,“无法格式化JSON”);
}
返回null;
}
私有void sendDatatoServer(){
最后一个字符串json=formatDataAsJASON();
新建异步任务(){
@凌驾
受保护字符串doInBackground(无效…参数){
返回getServerResopnse(json);
}
@凌驾
受保护的void onPostExecute(字符串结果){
如果(结果==“VIN已存在”){
Toast.makeText(Scan.this,
getString(R.string.vin_存在),Toast.LENGTH_LONG)
.show();
最终意图i=新意图(Scan.this,Scan.class);
星触觉(i);
}否则{
StartSell();
}
}
}.execute();
}
私有字符串getServerResopnse(字符串json){
HttpPost=newhttppost(“http://”+serverIp.getText().toString())
+“/chekVIN.php”);
试一试{
StringEntity=新的StringEntity(json);
后设实体(实体);
setHeader(“内容类型”、“应用程序/json”);
DefaultHttpClient=新的DefaultHttpClient();
BasicResponseHandler=新的BasicResponseHandler();
字符串响应=client.execute(post,handler);
返回响应;
}捕获(不支持的编码异常e){
Log.d(“JWP”,e.toString());
}捕获(客户端协议例外e){
Log.d(“JWP”,e.toString());
}捕获(IOE异常){
Log.d(“JWP”,e.toString());
}
返回null;
}
私有void StartSell(){
最终意图i=新意图(Scan.this,Sell.class);
EditText EditText=(EditText)findViewById(R.id.VIN);
String text=editText.getText().toString();
EditText editText2=(EditText)findViewById(R.id.Make);
字符串text2=editText2.getText().toString();
EditText editText3=(EditText)findViewById(R.id.Model);
字符串text3=editText3.getText().toString();
EditText editText4=(EditText)findViewById(R.id.Color);
字符串text4=editText4.getText().toString();
EditText editText5=(EditText)findViewById(R.id.Year);
字符串text5=editText5.getText().toString();
试一试{
FileOutputStream fos=openFileOutput(VinHolder,
上下文。模式(私人);
fos.write(text.getBytes());
fos.close();
FileOutputStream fos2=openFileOutput(MakeHolder,
上下文。模式(私人);
write(text2.getBytes());
fos2.close();
列队
11-21 16:34:43.736: E/AndroidRuntime(725): FATAL EXCEPTION: AsyncTask #2
11-21 16:34:43.736: E/AndroidRuntime(725): java.lang.RuntimeException: An error occured while executing doInBackground()
11-21 16:34:43.736: E/AndroidRuntime(725): at android.os.AsyncTask$3.done(AsyncTask.java:299)
11-21 16:34:43.736: E/AndroidRuntime(725): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
11-21 16:34:43.736: E/AndroidRuntime(725): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
11-21 16:34:43.736: E/AndroidRuntime(725): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
11-21 16:34:43.736: E/AndroidRuntime(725): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-21 16:34:43.736: E/AndroidRuntime(725): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-21 16:34:43.736: E/AndroidRuntime(725): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
11-21 16:34:43.736: E/AndroidRuntime(725): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
11-21 16:34:43.736: E/AndroidRuntime(725): at java.lang.Thread.run(Thread.java:856)
11-21 16:34:43.736: E/AndroidRuntime(725): Caused by: java.lang.IllegalArgumentException: Host name may not be null
11-21 16:34:43.736: E/AndroidRuntime(725): at org.apache.http.HttpHost.<init>(HttpHost.java:83)
11-21 16:34:43.736: E/AndroidRuntime(725): at org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:497)
11-21 16:34:43.736: E/AndroidRuntime(725): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:626)
11-21 16:34:43.736: E/AndroidRuntime(725): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
11-21 16:34:43.736: E/AndroidRuntime(725): at com.mobile.donswholesale.Scan.getServerResopnse(Scan.java:272)
11-21 16:34:43.736: E/AndroidRuntime(725): at com.mobile.donswholesale.Scan.access$1(Scan.java:260)
11-21 16:34:43.736: E/AndroidRuntime(725): at com.mobile.donswholesale.Scan$4.doInBackground(Scan.java:240)
11-21 16:34:43.736: E/AndroidRuntime(725): at com.mobile.donswholesale.Scan$4.doInBackground(Scan.java:1)
11-21 16:34:43.736: E/AndroidRuntime(725): at android.os.AsyncTask$2.call(AsyncTask.java:287)
11-21 16:34:43.736: E/AndroidRuntime(725): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
11-21 16:34:43.736: E/AndroidRuntime(725): ... 5 more
private void addSellButtonListener() {
Button sell = (Button) findViewById(R.id.sell_button);
sell.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendDatatoServer();
}
});
}
private String formatDataAsJASON() {
JSONObject root = new JSONObject();
try {
root.put("User", userId.getText().toString());
root.put("Pword", userPass.getText().toString());
root.put("VIN", VINID.getText().toString());
return root.toString();
} catch (JSONException e) {
Log.d("JWP", "Can't format JSON");
}
return null;
}
private void sendDatatoServer() {
final String json = formatDataAsJASON();
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
return getServerResopnse(json);
}
@Override
protected void onPostExecute(String result) {
if (result == "VIN already exists") {
Toast.makeText(Scan.this,
getString(R.string.vin_exists), Toast.LENGTH_LONG)
.show();
final Intent i = new Intent(Scan.this, Scan.class);
startActivity(i);
} else {
StartSell();
}
}
}.execute();
}
private String getServerResopnse(String json) {
HttpPost post = new HttpPost("http://" + serverIp.getText().toString()
+ "/chekVIN.php");
try {
StringEntity entity = new StringEntity(json);
post.setEntity(entity);
post.setHeader("Content-type", "application/json");
DefaultHttpClient client = new DefaultHttpClient();
BasicResponseHandler handler = new BasicResponseHandler();
String response = client.execute(post, handler);
return response;
} catch (UnsupportedEncodingException e) {
Log.d("JWP", e.toString());
} catch (ClientProtocolException e) {
Log.d("JWP", e.toString());
} catch (IOException e) {
Log.d("JWP", e.toString());
}
return null;
}
private void StartSell() {
final Intent i = new Intent(Scan.this, Sell.class);
EditText editText = (EditText) findViewById(R.id.VIN);
String text = editText.getText().toString();
EditText editText2 = (EditText) findViewById(R.id.Make);
String text2 = editText2.getText().toString();
EditText editText3 = (EditText) findViewById(R.id.Model);
String text3 = editText3.getText().toString();
EditText editText4 = (EditText) findViewById(R.id.Color);
String text4 = editText4.getText().toString();
EditText editText5 = (EditText) findViewById(R.id.Year);
String text5 = editText5.getText().toString();
try {
FileOutputStream fos = openFileOutput(VinHolder,
Context.MODE_PRIVATE);
fos.write(text.getBytes());
fos.close();
FileOutputStream fos2 = openFileOutput(MakeHolder,
Context.MODE_PRIVATE);
fos2.write(text2.getBytes());
fos2.close();
FileOutputStream fos3 = openFileOutput(ModelHolder,
Context.MODE_PRIVATE);
fos3.write(text3.getBytes());
fos3.close();
FileOutputStream fos4 = openFileOutput(ColorHolder,
Context.MODE_PRIVATE);
fos4.write(text4.getBytes());
fos4.close();
FileOutputStream fos5 = openFileOutput(YearHolder,
Context.MODE_PRIVATE);
fos5.write(text5.getBytes());
fos5.close();
}
catch (Exception e) {
Log.d("DEBUGTAG", "File Not Saved" + text);
e.printStackTrace();
}
startActivity(i);
}