在AsyncTask的doInBackground方法中调用HttpClient的execute方法,HttpGet地址为内网时无问题,部署到外网就不执行了

为了方便看我就简介的写写,需要详细信息的请回复告诉我!!

1、首先是发起Activity:


import java.net.URL;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

import com.andecy.myfirstapp.R.id;
import com.andecy.myfirstapp.R.layout;

public class Cpt9_GetRegisterAtyDialog extends Activity implements
OnClickListener {


private Button btn_ok;
private String get_url;

private Cpt9_GetRegisterAsync mAsync;

@Override
protected void onCreate(Bundle savedInstanceState) {
initViews();
super.onCreate(savedInstanceState);
StickMethod();
}

private void initViews() {
setContentView(layout.cpt9_register_dialog);
btn_ok = (Button) findViewById(id.btn_cpt9_register_ok);
btn_ok.setOnClickListener(this);
}

@Override
public void onClick(View v) {
registerAcount();
}


private boolean registerAcount() {
mAsync = new Cpt9_GetRegisterAsync();
                get_url = "http://t_guet.jd-app.com/servlet/GetRegisterServlet?Name=andecy&Pwd=123456&Email=andecy@foxmail.com";
mAsync.execute(get_url);
return false;

}

private void StickMethod() {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
        .detectDiskReads()
        .detectDiskWrites()
        .detectAll()   // or .detectAll() for all detectable problems
        .penaltyLog()
        .build());
     StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
        .detectLeakedSqlLiteObjects()
        .detectLeakedClosableObjects()
        .penaltyLog()
        .penaltyDeath()
        .build());
}
}


下面是那个AsyncTask:


import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.StrictMode;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;

public class Cpt9_GetRegisterAsync extends AsyncTask<String, Void, String> {

private HttpClient mHttpClient;
private HttpGet mHttpGet;
private HttpResponse mHttpResponse;
private HttpEntity mHttpEntity;

@Override
protected String doInBackground(String... params) {
String result = null;
Log.i("TAG", "doInBackground--->start");
try {
mHttpClient = new DefaultHttpClient(httpConfig());
mHttpGet = new HttpGet(params[0]);
Log.i("TAG", "doInBackground--->before execute");
mHttpResponse = mHttpClient.execute(mHttpGet);
Log.i("TAG", "doInBackground--->after execute");

int bacckCode = mHttpResponse.getStatusLine().getStatusCode();
Log.i("TAG", "doInBackground--->bacckCode"+bacckCode);
if (bacckCode == 200) {
mHttpEntity = mHttpResponse.getEntity();
result = EntityUtils.toString(mHttpEntity);
} else {
result = -1;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("TAG", "doInBackground--->over");
return result;
}

@Override
protected void onPostExecute(String result) {
Log.i("TAG", "onPostExecute--->start:" + result);
super.onPostExecute(result);
}

private HttpParams httpConfig() {
HttpParams mhParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(mhParams, 3 * 1000);
HttpConnectionParams.setSoTimeout(mhParams, 5 * 1000);
HttpConnectionParams.setSocketBufferSize(mhParams, 8192);
return mhParams;
}
}


服务器是没有问题的!!
大家可以把下面的地址输入到网址中去,网页返回的应该是0、1、2,三个中的一个

get_url = "http://t_guet.jd-app.com/servlet/GetRegisterServlet?Name=andecy&Pwd=123456&Email=andecy@foxmail.com";

我在测试上述代码的时候,如果服务器通过tomcat架设到本地,手机访问就可以获得返回值
但是服务器架设到外网上,就连下面这个都执行不完
mHttpResponse = mHttpClient.execute(mHttpGet);

导致result是null

mHttpEntity = mHttpResponse.getEntity();
result = EntityUtils.toString(mHttpEntity);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值