0

我想在后台线程中发送一个获取请求并具有以下代码:

public HttpResponse sendRequestInBackground(String clickUrl){
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy); 

    HttpResponse response = null;
    try {        
            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet(clickUrl);
            HttpContext context = new BasicHttpContext();
            response = client.execute(request, context);
            Log.d("SEND_GET_REQUEST", "GET REQUEST SENT WITH URL: " + clickUrl);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }  catch (Exception e){
          e.printStackTrace();
        }
        return response;
    }

但不断得到java.lang.IllegalStateException: Scheme 'market' not registered.任何想法我做错了什么?

4

4 回答 4

0

您发送的 URL 格式似乎不正确。我猜你的 URL 是这样的:market://details?id=com.example.bacon这不是一个有效的 URL。如果您尝试将 Play 商店打开到您想要使用 Intent 的应用程序。

像这样(com.example.bacon 是你的应用程序的包名):

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("market://details?id=com.example.bacon")); 
startActivity(intent);

没有更多代码发布,这是我能做的最好的。

于 2013-10-16T18:29:57.057 回答
0

我使用了http://loopj.com/android-async-http/,它对我来说非常有效。

于 2013-10-16T18:41:56.060 回答
0

您并没有以这种方式创建后台线程,您只是通过强制允许主线程上的网络操作来防止您的应用程序崩溃。执行此类操作的一种有效方法是使用 AsyncTask 类。顺便说一句,下面用于发出 http get 请求的代码每次都对我有用。

HttpGet httpRequest = new HttpGet(url);
                HttpClient httpclient = new DefaultHttpClient();
                HttpResponse response = null;
                try {
                    response = (HttpResponse) httpclient.execute(httpRequest);
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
于 2013-10-16T18:06:51.837 回答