Articles of httpclient

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(); // […]

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) 有任何想法吗?

4G / LTE上的Android HttpClient OOM(HTC Thunderbolt)

在Verizon的4G / LTE上使用我的应用程序时,我收到了一些崩溃用户的报告。 看着堆栈跟踪,看起来像Android的HttpClient.execute()实现是抛出一个OOM。 这只发生在4G / LTE设备上,特别是HTC Thunderbolt,并且仅在4G / LTE上发生。 WiFi,3G,UMTS都可以。 在Sprint的WiMax 4G上也能正常工作。 两个问题: 获得Android开发者关注的最好方法是什么? 比报告http://code.google.com/p/android/issues有更好的select吗? 关于如何解决这个问题的任何想法? 我自己没有4G设备,我不能在模拟器中发生这种情况,所以我需要在这里进行一些有教育意义的猜测。 我可以尝试在我的代码中捕捉OOM并尝试清理并强制GC,但我不确定这是否是一个好主意。 意见或其他build议? 以下是我的代码所做的事情: HttpParams params = this.getHttpParams(); // returns params ClientConnectionManager cm = new ThreadSafeClientConnManager(params, this.getHttpSchemeRegistry() ); DefaultHttpClient httpClient = new DefaultHttpClient( cm, params ); HttpResponse response = null; request = new HttpGet( url ); try { […]

有没有办法从WebView.getSettings()。getUserAgentString()之外获得默认的用户代理string?

我想在HttpClient连接中使用手机的默认用户代理,并希望知道是否有办法获取用户代理而不必拥有WebView查询。

Android HttpClient和HTTPS

我是在Android中实现HTTPS连接的新手。 基本上,我试图连接到使用org.apache.http.client.HttpClient的服务器。 我相信,在某种程度上,我需要访问应用程序的密钥库,以便用私钥授权我的客户端。 但是,目前,我只是想连接,看看会发生什么; 我不断收到HTTP / 1.1 400错误的请求错误。 尽pipe有很多例子,但我似乎无法做出正面或反面的结论(这些例子似乎都不适合我)。 我的代码看起来像这样(BODY常量是XmlRPC): private void connect() throws IOException, URISyntaxException{ HttpPost post = new HttpPost(new URI(PROD_URL)); HttpClient client = new DefaultHttpClient(); post.setEntity(new StringEntity(BODY)); HttpResponse result = client.execute(post); Log.d("MainActivity", result.getStatusLine().toString()); } 所以,很简单。 让我知道有没有人有任何build议。 谢谢!

Android SSL HttpGet(无对等证书)错误或(连接被对等closures)错误

我正在尝试做一个简单的HttpGet来读取一个网页。 我有这个在iOS上工作,并通过HTTP在Android上工作,但不是https。 该url是一个内部networkingIP和自定义端口,所以我可以用这样的http://ipaddress:port/MyPage.html使用http://ipaddress:port/MyPage.html HttpClient httpclient = new DefaultHttpClient(httpParameters); HttpResponse response; String responseString = null; try { // Try connection HttpGet get = new HttpGet(params[0].path); get.addHeader("Authorization", "Basic " + Base64.encodeBytes(new String(params[0].username + ":" + params[0].password) .getBytes())); response = httpclient.execute(get); StatusLine statusLine = response.getStatusLine(); if (statusLine.getStatusCode() == HttpStatus.SC_OK) { ByteArrayOutputStream out = new ByteArrayOutputStream(); response.getEntity().writeTo(out); out.close(); responseString […]

DefaultHttpClient到AndroidHttpClient

我的代码有问题,希望得到一些帮助。 我第一次使用这个代码: new DefaultHttpClient().execute(new HttpGet(linkk)).getEntity().writeTo( new FileOutputStream(f)); 它在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)); 这是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: […]

Android 1.6中捆绑了什么版本的Apache HTTP Client?

为了进行集成testing,我希望有一个独立的项目在正常的JVM中运行我的服务器通信代码。 这段代码使用了构build在Android Framework中的这些库。 http://developer.android.com/reference/org/apache/http/client/package-summary.html 有谁知道这个应该是什么版本的Apache HTTP客户端? 我想运行它没有Android的testing,这是痛苦的慢。

我需要Android中的HttpClient的替代选项来将数据发送到PHP,因为它不再受支持

目前我正在使用HttpClient , HttpPost从Android app发送数据到我的PHP server ,但所有这些方法在API 22中被弃用,并在API 23中删除,所以有什么替代select呢? 我到处search,但没有find任何东西。