@Override
public void run()
{
// 请求的地址
String url = "http://192.168.1.1/MyService/loginAction.action";
Log.d("me", "请求服务器进行登录验证的URL:" + url);
// 创建一个HttpClient对象
HttpClient httpclient = new DefaultHttpClient();
// 创建HttpPost
HttpPost httppost = null;
httppost = new HttpPost(url);
// 添加请求参数
List
formparams.add(new BasicNameValuePair("username", username));
formparams.add(new BasicNameValuePair("password", password));
UrlEncodedFormEntity uefEntity;
try
{
uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
httppost.setEntity(uefEntity);
HttpResponse response;
// 执行Post请求
response = httpclient.execute(httppost); //到这里卡住了,不向下执行了。但不抛出任何错误,也没有被catch捕获
// 如果请求成功
if (response.getStatusLine().getStatusCode() == 200)
{
// 获取响应实体
HttpEntity entity = response.getEntity();
if (entity != null)
{
String json = EntityUtils.toString(entity, "UTF-8");
Log.d("me", "从服务器返回的登录验证结果对应的json为:" + json);
// 将json通过Message发送
Message msg = handler.obtainMessage();
msg.obj = json;
handler.sendMessage(msg);
}
}
else
{
Log.d("me", "请求服务器失败,错误代码为:" + response.getStatusLine().getStatusCode());
}
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
自己的:
public void ewayAddCard(String nameCard,String cardNub,String mm,String yy,String cvn) { HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost("https://api.sandbox.ewaypayments.com/AccessCodes"); try { httpPost.addHeader("Content-Type","application/json"); // httpPost.addHeader("Authorization","Basic Rjk4MDJDUEY4Mm5TNy9tN1N4UFRQK21MY1U3MGRiNTNZTDBYNjBWa25UVmtPVEJjN2Z5WGVaWlA5WkZqRWpjNzZDOEdGUDpTaGFyZVBhc3M1NTY2"); if (AccessCode != null&&FormActionURL!=null) { String accesscode = AccessCode; String fromAction = FormActionURL; System.out.println("------------accesscode-----------"+accesscode); System.out.println("-----------FormActionURL------------"+FormActionURL); HttpPost httpPost2 = new HttpPost(fromAction); Listdata = new ArrayList (); data.add(new BasicNameValuePair("EWAY_ACCESSCODE", accesscode)); data.add(new BasicNameValuePair("EWAY_PAYMENTTYPE", "Credit Card")); data.add(new BasicNameValuePair("EWAY_CARDNAME", nameCard)); data.add(new BasicNameValuePair("EWAY_CARDNUMBER", cardNub)); data.add(new BasicNameValuePair("EWAY_CARDEXPIRYMONTH", mm)); data.add(new BasicNameValuePair("EWAY_CARDEXPIRYYEAR", yy)); data.add(new BasicNameValuePair("EWAY_CARDCVN", cvn)); httpPost2.setEntity(new UrlEncodedFormEntity(data,"UTF-8")); HttpResponse httpResponse2 = httpClient.execute(httpPost2); HttpEntity entity2 = httpResponse2.getEntity(); if (null != entity2) { String responseContent = EntityUtils.toString(entity2, "UTF-8"); System.out.println("-----------------------------"+responseContent); if ("Credit Card bind failed".equals(responseContent)){ showToastInThread(getResources().getString(R.string.creditCard_fail)); this.finish(); } else if ("Credit card binding is successful".equals(responseContent)){ showToastInThread(getResources().getString(R.string.creditCard_successful)); dialogs.dismiss(); this.finish(); } }else { showToastInThread(getResources().getString(R.string.creditCard_fail)); dialogs.dismiss(); this.finish(); } } } catch (Exception e) { showToastInThread(getResources().getString(R.string.creditCard_fail)); e.printStackTrace(); dialogs.dismiss(); this.finish(); } finally{ httpClient.getConnectionManager().shutdown(); } }
我的解决方法是这样的,不知道你们是否适用:
在onCreate方法里面加上这段:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // or .detectAll() for all detectable problems .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() .build());
原因是android阻止了post请求。networkonmain 的exception