Articles of httpclient

HonyComb和DefaultHttpClient

在我的代码中我有这个 Log.d(“WFlog (executeRequest)”, request.toString()) ; httpResponse = client.execute(request); Log.d(“WFlog (execute)”, request.toString()) ; 使用Android 2.2运行应用程序很顺利,在logcat中我看到两个日志行。 现在使用HonyComb为相同的代码运行应用程序似乎我永远不会正确地传递client.execute。 我得到的最后一个日志行是“WFlog(executeRequest)”。 在此之后,我看到以下内容: 01-27 21:54:45.169: WARN/System.err(390): android.os.NetworkOnMainThreadException 01-27 21:54:45.196: WARN/System.err(390): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1069) 01-27 21:54:45.196: WARN/System.err(390): at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:368) 01-27 21:54:45.205: WARN/System.err(390): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:208) 01-27 21:54:45.215: WARN/System.err(390): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:431) 01-27 21:54:45.237: WARN/System.err(390): at java.net.Socket.connect(Socket.java:901) 知道我应该寻找什么吗?

Android HttpClient不使用系统代理设置

当我创建DefaultHttpClient对象并尝试访问网页时,请求不会通过我在“设置”中指定的代理进行路由。 浏览API文档,我没有看到任何可以指定代理的地方,虽然Android确实有一个允许我读取系统代理设置的Proxy类。 有没有办法在HttpClient中使用代理设置?

Android:用ThreadSafeClientConnManager下载图片的Bug

对于我目前的应用程序,我从西class牙的不同“活动提供商”收集图像。 Bitmap bmp=null; HttpGet httpRequest = new HttpGet(strURL); long t = System.currentTimeMillis(); HttpResponse response = (HttpResponse) httpclient.execute(httpRequest); Log.i(TAG, “Image [“+ strURL + “] fetched in [” + (System.currentTimeMillis()-t) + “ms]”); HttpEntity entity = response.getEntity(); InputStream instream = entity.getContent(); bmp = BitmapFactory.decodeStream(instream); return bmp; 但是,从salir.com下载图像时,我得到以下logcat输出: 13970 Gallery_Activity I Fetching image 2/8 URL: http://img.androidcookie.com/java/2540-los_inmortales_la_trattoria-marc_aureli_27_29_no.jpg 13970 ServiceHttpRequest I […]

Apache HttpClient摘要式身份validation

基本上我需要做的是执行摘要式身份validation。 我尝试的第一件事是这里提供的官方示例。 但是当我尝试执行它时(通过一些小的更改,Post而不是Get方法)我得到了一个 org.apache.http.auth.MalformedChallengeException: missing nonce in challange at org.apache.http.impl.auth.DigestScheme.processChallenge(DigestScheme.java:132) 当这次失败时我尝试使用: DefaultHttpClient client = new DefaultHttpClient(); client.getCredentialsProvider().setCredentials(new AuthScope(null, -1, null), new UsernamePasswordCredentials(“”, “”)); HttpPost post = new HttpPost(URI.create(“http://”)); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair(“domain”, “”)); post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); DigestScheme digestAuth = new DigestScheme(); digestAuth.overrideParamter(“algorithm”, “MD5”); digestAuth.overrideParamter(“realm”, “http://”); digestAuth.overrideParamter(“nonce”, Long.toString(new Random().nextLong(), 36)); digestAuth.overrideParamter(“qop”, “auth”); digestAuth.overrideParamter(“nc”, […]

Android是否同时支持多个HTTP请求?

在我的应用程序中,我想同时处理几个文件的下载。 为此,我将启动多个服务,每个请求一个。 我不确定,Android是否支持并行的http请求? 在这种情况下,每个请求有一个HTTPClient是好习惯还是坏习惯? 非常感谢您的帮助!

Android – 发送HTTPS获取请求

我想向谷歌购物api发送一个HTTPS获取请求,但是没有什么对我有用,例如这里是我正在尝试的内容: try { HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI(“https://www.googleapis.com/shopping/search/v1/public/products/?key={my_key}&country=&q=t-shirts&alt=json&rankByrelevancy=”)); HttpResponse response = client.execute(request); } catch (URISyntaxException e) { e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return response; } 如果有人对如何改进或更换它有任何建议,请提前告知我们。

URLConnection或HTTPClient:哪个提供更好的function和更高的效率?

我希望为Android应用程序创建一个登录表单。 我想使用post方法将信息发送到服务器端,由PHP文件处理它; 然后validation参数并发回响应。 我看一下使用HttpClient和URLConnection的实现,它们非常相似。哪个在Android应用程序中使用效率更高? 谢谢Fabii

Android Java UTF-8 HttpClient问题

我从一个网页抓取的JSON数组有奇怪的字符编码问题。 服务器正在发送回此标头: 内容types文本/ javascript; 字符集= UTF-8 此外,我可以在Firefox或任何浏览器中查看JSON输出,并正确显示Unicode字符。 响应有时会包含来自其他语言的单词,带有重音符号等。 但是,当我将它拉下来并将其放入Java中的字符串时,我会得到那些奇怪的问号。 这是我的代码: HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, “utf-8”); params.setBooleanParameter(“http.protocol.expect-continue”, false); HttpClient httpclient = new DefaultHttpClient(params); HttpGet httpget = new HttpGet(“http://www.example.com/json_array.php”); HttpResponse response; try { response = httpclient.execute(httpget); if(response.getStatusLine().getStatusCode() == 200){ // Connection was established. Get the content. HttpEntity entity = response.getEntity(); // If the […]

在android中取消Http连接

我正在使用org.apache.http ,我有这个代码: DefaultHttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(url); HttpResponse resp = client.execute(get); HttpEntity entity = resp.getEntity(); InputStream input = entity.getContent(); … //Read the bytes from input stream 这是我用来通过Http下载文件的代码,我想取消连接(可能是用户选择的)什么是关闭连接的优雅方式。 我find了两种方法,两种都取消了下载。 关闭inputsteram,input.close(); 这会导致IOException。 中止HttpGet对象,get.abort()会导致SocketException。 我试过catch,所以没有错误,但没有抛出exception,有没有办法取消或中止连接? 什么是正确的方法呢?

Android上的DefaultHttpClient中连接和套接字超时的默认值是什么?

在Android 2.1 / 2.2上,我使用Android SDK中的DefaultHttpClient 。 Apache在他们的文档中说有两个超时: CoreConnectionPNames.SO_TIMEOUT =’http.socket.timeout’:定义套接字超时(SO_TIMEOUT),以毫秒为单位,即等待数据的超时,换句话说,两个连续数据包之间的最大周期不活动。 超时值为零被解释为无限超时。 此参数需要java.lang.Integertypes的值。 如果未设置此参数,则读取操作不会超时(无限超时)。 CoreConnectionPNames.CONNECTION_TIMEOUT =’http.connection.timeout’:确定建立连接之前的超时(以毫秒为单位)。 超时值为零被解释为无限超时。 此参数需要java.lang.Integertypes的值。 如果未设置此参数,则连接操作不会超时(无限超时)。 我尝试在Android源中搜索这两个超时的默认值,但无法find。 有谁知道这些超时的默认值是什么? 我想获得一个链接到值设置的源或关于此的官方文档(而不仅仅是听取意见)。