相关疑难解决方法(0)

DefaultHttpClient到AndroidHttpClient

我的代码有问题,我希望得到一些帮助.我是第一次使用这段代码:

        new DefaultHttpClient().execute(new HttpGet(linkk)).getEntity().writeTo(
           new FileOutputStream(f));
Run Code Online (Sandbox Code Playgroud)

它在Android 2.3上运行得很好但在4.0上却没有.经过一些研究,我听说使用AndroidHttpClient更好,这样它就可以在4.0和3.1上运行.问题是我不知道我是否正确修改了我的代码,而且互联网上没有太多关于AndroidhttpClient的例子.

这是我调整后的代码:

    AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
    HttpGet request = new HttpGet(linkk);   
    HttpResponse response = client.execute(request); //here is where the exception is thrown    
    response.getEntity().writeTo(new FileOutputStream(f));
Run Code Online (Sandbox Code Playgroud)

这是logcat显示的内容:

     01-03 01:32:11.950: W/dalvikvm(17991): threadid=1: thread exiting with uncaught exception (group=0x40a2e1f8)
     01-03 01:32:11.986: E/AndroidRuntime(17991): FATAL EXCEPTION: main
     01-03 01:32:11.986: E/AndroidRuntime(17991): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lacra.fbirthdays/com.lacra.fbirthdays.ListV}: android.os.NetworkOnMainThreadException
     01-03 01:32:11.986: E/AndroidRuntime(17991):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
     01-03 01:32:11.986: E/AndroidRuntime(17991):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
     01-03 01:32:11.986: E/AndroidRuntime(17991):   at android.app.ActivityThread.access$600(ActivityThread.java:123)
     01-03 01:32:11.986: E/AndroidRuntime(17991):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
     01-03 01:32:11.986: …
Run Code Online (Sandbox Code Playgroud)

android apache-commons-httpclient

26
推荐指数
2
解决办法
5万
查看次数

AndroidHttpClient和Cookies

使用带有cookie的AndroidHttpClient给我混合200 ok和403禁止响应.我不确定我做错了什么.

我以下列方式使用AndroidHttpClient:

我有几个后台线程类,每个类都执行以下操作:

HttpGet get...
HttpClient client = AndroidHttpClient.newInstance("Android");
HttpContext http_context = HttpSupport.getHttpContextInstance(); 
CookieStore cookie_store = HttpSupport.getCookieStoreInstance();
http_context.setAttribute(ClientContext.COOKIE_STORE, cookie_store);
client.execute(
Run Code Online (Sandbox Code Playgroud)

HttpSupport是一个包含两个静态字段的类; 一个CookieStore和一个HttpContext:

public class HttpSupport {

private static HttpContext _context;
private static CookieStore _cookieStore;

public static synchronized HttpContext getHttpContextInstance() {
    if (_context == null) {
        _context = new BasicHttpContext();
    }
    return _context;
}

public static synchronized CookieStore getCookieStoreInstance() {
    if (_cookieStore == null) {
        _cookieStore = new BasicCookieStore();
    }
    return _cookieStore;
}

}
Run Code Online (Sandbox Code Playgroud)

在应用程序中有多个AndroidHttpClient实例可以吗?我是否正确存储了cookie?

cookies android httpclient httpcontext

0
推荐指数
1
解决办法
3556
查看次数