android 使用代理出错
问题是这样的:
当使用网络是wap的时候,使用代理进行连接网络,问题是刚开始还能练上去,多练几次马上就出现错误了。 查不出什么原因。
代码中是这样调用的:
public final DefaultHttpClient createHttpClient()
{
// Sets up the http part of the service.
final SchemeRegistry supportedSchemes = new SchemeRegistry();
// Register the "http" protocol scheme, it is required
// by the default operator to look up socket factories.
final SocketFactory sf = PlainSocketFactory.getSocketFactory();
supportedSchemes.register(new Scheme("http", sf, 80));
supportedSchemes.register(new Scheme("https",
new EasySSLSocketFactory(), 443));
// Set some client http client parameter defaults.
final HttpParams httpParams = createHttpParams();
HttpClientParams.setRedirecting(httpParams, false);
HttpClientParams.setCookiePolicy(httpParams,
CookiePolicy.BROWSER_COMPATIBILITY);
String netType = FunctionUtil.getNetType(mApplication.getBaseContext());
if (!TextUtils.isEmpty(netType) && netType.toLowerCase().equals("ok"))
{
HttpHost proxy = new HttpHost("10.0.0.172", 80);
httpParams.setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
}
final ClientConnectionManager ccm = new ThreadSafeClientConnManager(
httpParams, supportedSchemes);
DefaultHttpClient httpClient = new DefaultHttpClient(ccm, httpParams);
return httpClient;
}
我是这样调用的:
private String get(List<NameValuePair> olist, String action)
throws ParseException, IOException
{
List<NameValuePair> list = new ArrayList<NameValuePair>();
if (olist != null)
{
list.addAll(olist);
}
list.add(new BasicNameValuePair("dcode", mApplication.getDeviceId()));
list.add(new BasicNameValuePair("versionCode", String
.valueOf(mApplication.getVersionCode())));
String url = isHttpsRequest ? prdHttpsUrl : prdUrl;
if (isHttpsRequest)
{
isHttpsRequest = false;
}
HttpGet request = new HttpGet(url + action + "?"
+ URLEncodedUtils.format(list, ENCODE));
request.addHeader("Accept-Encoding", "gzip");
request.addHeader("Cookie"/* "set-commerce-cookie" */,
mApplication.getmB2CCookieId());
request.addHeader(
"User-Agent",
"Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16");
String result = mClient.execute(request, responseHandler);
LogSubook.d("http result", result);
return result;
}
说明:使用的地址全是域名。不是ip地址。
报错信息:
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): FATAL EXCEPTION: AsyncTask #5
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): java.lang.RuntimeException: An error occured while executing doInBackground()
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at android.os.AsyncTask$3.done(AsyncTask.java:200)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at java.lang.Thread.run(Thread.java:1019)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): Caused by: java.lang.NullPointerException
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:547)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:653)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
08-17 11:00:00.950: ERROR/AndroidRuntime(11546): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)