作者:-崔思聪 | 来源:互联网 | 2023-05-17 04:03
packagecom.text;importorg.apache.http.Header;importandroid.app.Activity;importandroid.os.Bu
package com.text;
import org.apache.http.Header;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.TextHttpResponseHandler;
public class AsyncActivity extends Activity {
private EditText editText;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.et);
textView = (TextView) findViewById(R.id.tv);
}
public void go(View v) {
new AsyncHttpClient().get(editText.getText().toString().trim(), new TextHttpResponseHandler() {
public void onSuccess(int statusCode, Header[] headers, String responseString) {
textView.setText(responseString);
}
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
Toast.makeText(getApplicationContext(), "服务器忙!!! " + statusCode, Toast.LENGTH_SHORT).show();
}
});
}
}
布局很简单,一个EditText用来输入网址,一个TextView用来返回网站上的文字,还有一个button一点击就运行go方法。
然后自己用tomcat部署了一个jsp,内容只有一行: Welcome.
现在的问题是,输入网址后,显示服务器忙, statusCode为0, 不管什么网站都是0,不知道是什么原因造成的。。。
排除这么几个方面:
添加了Internet权限。
不是模拟器问题,放到手机也一样这个结果。
AsyncHttpClient我是从github下载loopj的,直接复制library里面的.java文件到自己的包里的,所以这个应该没什么问题。
网站也没问题,手机浏览器能打开。
看起来都没错啊
到底是为什么啊啊啊啊
7 个解决方案
这个库经过调试了吗 , 网站上有没有 测试的 demo , 线确保库的正确性, 用一些简单的demo 测试下, 然后再弄复杂的网页抓取什么的
起个thread跑一下AsyncHttpClient
楼主不厚道,我来给大家解决方案吧:
应该在
public void onFailure(int arg0, Header[] arg1, byte[] arg2,
Throwable arg3) {}
这个回掉方法里用 arg3..printStackTrace();打印错误信息
根据错误信息判断具体原因。
我的原因是传入的url没有加"http",错误信息提示no valid uri schem