Articles of httpclient

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

在我的应用程序中,我想同时处理几个文件的下载。 要做到这一点,我开始了几个服务,每个请求一个。 正如我不确定,Android是否同时支持并发http请求? 在这种情况下,每个请求有一个HTTPClient是好的还是坏习惯? 非常感谢您的帮助!

使用loopj获取SocketTimeoutExceptions AsyncHttpClient …是否有超时值,我可以设置?

当使用loopj AsyncHttpClient库的时候,在发出请求的时候我总是得到java.net.SocketTimeoutExceptions(见下面)。 有一些超时值可以设置吗? 注 :我发布这个希望为其他人提供一些帮助。 我(愚蠢)努力寻找解决scheme一段时间。 堆栈跟踪: java.net.SocketTimeoutException at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491) at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103) at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191) at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82) at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174) at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180) at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235) at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259) at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:76) at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:95) at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:57) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390) at java.util.concurrent.FutureTask.run(FutureTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:856)

Android HttpClient – 证书中的主机名不符合<example.com>!= <*。example.com>

我在Android上使用HttpClient连接到https://someUrl.com/somePath 。 问题是该网站的证书是* .someUrl.com,而不是someUrl.com,所以我得到一个SSLException。 是的,但是,除非我能把它修好,否则我会被卡住。 有没有办法让我的HttpClient放松并接受证书?

检测并处理需要login的WiFi

我在一个Android应用程序中使用HttpClient 4.1,并试图让我的应用程序的API请求截获其中一个“你需要login或支付WiFi”屏幕的智能。 我想popup一个webview允许用户login。 我一直在尝试拦截httpClient中的redirect,但我没有成功。 这是我目前正在尝试: this.client = new DefaultHttpClient(connectionManager, params); ((DefaultHttpClient) this.client).setRedirectStrategy(new DefaultRedirectStrategy() { public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) { boolean isRedirect = Boolean.FALSE; try { isRedirect = super.isRedirected(request, response, context); } catch (ProtocolException e) { Log.e(TAG, "Failed to run isRedirected", e); } if (!isRedirect) { int responseCode = response.getStatusLine().getStatusCode(); if (responseCode […]

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

我期待为Android应用程序创build一个login表单。 我想用post方法将信息发送到PHP文件处理的服务器端; 进而validation参数并发送回应。 我已经通过使用HttpClient和URLConnection的实现来看,他们是非常相似的。哪一个更高效的使用android应用程序内? 感谢Fabii

在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下载文件的代码,我想取消连接(可能是用户select)什么是closures连接的优雅方式。 我find了2种方法,都取消了下载。 closuresinputsteram,input.close(); 这会导致IOException。 中止HttpGet对象,get.abort()会导致SocketException。 我有尝试赶上,所以没有erros,但没有抛出exception,有没有办法取消或中止连接? 什么是正确的方式去呢?

Android Java UTF-8 HttpClient问题

我有一个从网页抓取的JSON数组有奇怪的字符编码问题。 服务器正在发送这个头: Content-Type text / javascript; 字符集= UTF-8 另外,我可以看看Firefox中的JSON输出或任何浏览器和Unicode字符正确显示。 响应有时会包含来自另一种语言的重音符号等。 但是,当我把它拉下来并把它放到Java中的string时,我得到了这些奇怪的问号。 这是我的代码: 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(); // […]

使用HttpClient时跨活动使用Cookie

我正在尝试一个简单的应用程序来阅读网站的HTML,并转换它在Android中创build一个易于阅读的用户界面(这是学习android的exersize,而不是一个可用的应用程序)。 我遇到的问题是持续跨活动的用户会话,然后使用会话在HttpClient一旦召回。 我想这样做“正确”,推荐的方法似乎是使用CookieManager 。 我有这个问题,但是,我似乎无法find“正确”的方式来从CookieManager采取一个Cookie ,并在以后的实例中使用它在一个单独的活动HttpClient 。 当使用CookieManager我可以保存Cookie ,然后Cookie就在其他活动的范围内(参见代码片段2)。 请求页面时,我还没有find如何使用它(请参阅代码段3)。 说够了,这是一些代码。 首先我的login行为和Cookie存储: private OnClickListener loginActionListener = new OnClickListener() { public void onClick(View v) { EditText usernameTextView = (EditText) findViewById(R.id.Username); EditText passwordTextView = (EditText) findViewById(R.id.Password); String username = usernameTextView.getText().toString(); String password = passwordTextView.getText().toString(); try { HttpPost postMethod = new HttpPost(URI); HttpParams params = new BasicHttpParams(); params.setParameter("mode", […]

Android JSON HttpClient使用HttpResponse发送数据到PHP服务器

我目前正试图从Android应用程序发送一些数据到一个PHP服务器(都由我控制)。 应用程序中的表单上收集了大量数据,将其写入数据库。 这一切工作。 在我的主要代码中,首先我创build一个JSONObject(我已经在这里为这个例子剪下来): JSONObject j = new JSONObject(); j.put("engineer", "me"); j.put("date", "today"); j.put("fuel", "full"); j.put("car", "mine"); j.put("distance", "miles"); 接下来,我将这个对象传递给发送,并接收响应: String url = "http://www.server.com/thisfile.php"; HttpResponse re = HTTPPoster.doPost(url, j); String temp = EntityUtils.toString(re.getEntity()); if (temp.compareTo("SUCCESS")==0) { Toast.makeText(this, "Sending complete!", Toast.LENGTH_LONG).show(); } HTTPPoster类: public static HttpResponse doPost(String url, JSONObject c) throws ClientProtocolException, IOException { HttpClient httpclient […]

内容长度标题已经存在

我正在使用Android中包含的Apache HttpClient(4.1)来执行HttpPut。 我已经validation,我只有1个内容长度标题。 但是,每次发送请求时,都会收到关于已指定的Content-Length头的协议exception。 HttpClient client = new DefaultHttpClient(); putMethod = new HttpPut(url + encodedFileName); putMethod.addHeader(..) //<-once for each header putMethod.setEntity(new ByteArrayEntity(data)); client.execute(putMethod); //throws Exception 引起:org.apache.http.ProtocolException:内容长度头已经在org.apache.http.protocol.RequestContent.process(RequestContent.java:70)在org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor的.java:290) 有任何想法吗?