Articles of httpclient

使用HttpClient时在活动中使用Cookie

我正在尝试一个简单的应用程序来阅读网站的HTML,并转换它以在Android中创建一个易于阅读的UI(这是一个学习android的exersize,而不是一个可用的应用程序)。 我遇到的问题是跨活动持久存在用户会话,然后在调用后在HttpClient使用会话。 我想“正确地”这样做,推荐的方法似乎是使用CookieManager 。 但是我遇到了这个问题 – 我似乎无法find从CookieManager获取Cookie的“正确”方法,并在以后的单独活动中将HttpClient实例化。 当使用CookieManager我可以保存Cookie ,然后Cookie就在其他活动的范围内(参见代码片段2)。 我在请求页面时没有find如何使用它(请参阅代码片段3)。 够了,这里有一些代码。 首先我的登录操作和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中的HttpClient替代选项,以便将数据发送到PHP,因为它不再受支持

目前我正在使用HttpClient , HttpPost从Android app向我的PHP server发送数据,但所有这些方法在API 22中已弃用并在API 23中删除,那么它的替代选项有哪些? 我到处搜索,但我没有find任何东西。

Android 1.6捆绑了哪个版本的Apache HTTP Client?

我希望有一个单独的项目,在普通的JVM中运行我的服务器通信代码,以进行集成测试。 此代码使用构建到Android Framework中的这些库… http://developer.android.com/reference/org/apache/http/client/package-summary.html 有谁知道这应该是什么版本的Apache HTTP Client? 我想在没有Android测试的情况下运行它,这些测试非常缓慢。

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: […]

Content-Length标头已存在

我正在使用Android中包含的Apache HttpClient(4.1)来执行HttpPut。 我已经确认我只有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)中已经出现的Content-Length头文件位于org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor的.java:290) 有任何想法吗?

Android UnknownHostException:有没有办法设置超时?

当我连接到我的网络服务以检索数据时,手机有时会断开连接,DNS搞砸了等等。然后我得到一个完全正常的UnknownHostException 。 我想要做的是在这里寻找hostName时设置超时: response = httpclient.execute(httpget); 我已经设定: HttpConnectionParams.setConnectionTimeout(httpParameters,timeoutConnection); HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); 但它们似乎不适用于HostLookUp 。 有没有办法在主机查找时设置超时? 编辑 我刚刚发现用户无法在hc-dev邮件列表的这篇文章中修改nslookup的超时。 我将不得不在此时从计时器手动抛出超时exception。

如何使用gzip在Android Rails中压缩JSON?

我正在运行Rails 3.2.7与Ruby 1.9.3p194从SQLite数据库输出JSON数据。 render :json => result.to_json Android应用程序使用通过HTTP-GET加载的JSON文件: HttpClient httpclient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(urlPath); HttpResponse response = httpclient.execute(httpGet); HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, HTTP.UTF_8); JSONObject jsonObject = new JSONObject(result); 平台支持: 我读过Rails提供的gzip支持 ,如下所示: ActiveSupport::Gzip.compress(result) 我也从HTTP / 1.1,RFC2626,第14.3节猜测我可以configuration一个HTTP请求头: httpPost.setHeader("Accept-Encoding", "gzip"); 我还发现第3.5节“内容代码”中包含的信息非常有趣: 所有的内容编码值都是不区分大小写的 。 HTTP / 1.1使用Accept-Encoding (14.3节)和Content-Encoding (14.11节)标题字段中的内容编码值。 互联网号码分配机构(IANA)充当内容编码价值代币的注册机构。 最初,registry包含以下标记: […]

Android HttpClient和Cookies

我在Android中的HttpClient有一个问题:通过使用下面的代码,我想通过webviewlogin使用之前已经设置的cookie。 所以login数据应该在那里,确实在那里,我testing了它。 但是,当我在httppost或httpget中使用cookie时,它不使用login数据。 但这些cookies实际上应该足以接收那个需要login的页面,不是吗? 我不确定是否需要以特殊的方式将cookie发送到服务器或者是否足以将其加载到httpcontext中。 这里是代码: DefaultHttpClient httpclient = new DefaultHttpClient(); CookieStore lCS = new BasicCookieStore(); if (CookieManager.getInstance().getCookie(pUrl) != null) { String cookieString = CookieManager.getInstance().getCookie(pUrl); String[] urlCookieArray = cookieString.split(";"); for (int i = 0; i < urlCookieArray.length; i++) { System.out.println(urlCookieArray[i]); String[] singleCookie = urlCookieArray[i].split("="); Cookie urlCookie = new BasicClientCookie(singleCookie[0], singleCookie[1]); lCS.addCookie(urlCookie); } } HttpContext localContext […]

无法从IP服务器检索JSONArray,但我可以从普通服务器?

即时将一个服务从一个正常的域名服务器迁移到一个只有IP的服务器,这为我的应用程序提供了一个json服务,问题是我不能检索新的URL下面的代码的JSONArray: protected JSONArray doInBackground(String… arg0) { String reponse; try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse responce = httpclient.execute(httppost); HttpEntity httpEntity = responce.getEntity(); reponse = EntityUtils.toString(httpEntity); return new JSONArray(reponse); //With the oldURL I printed the JSON as a string and everithing OK but the new URL returns a null string of […]

如何在android上实现一个HTTP服务器

我在WIFI提供的同一个局域网上有两个android应用程序: 应用程序(A)在端口8033上打开侦听套接字 应用程序(B)使用HttpClient访问端口8033(A) (A)可以在(B)上做POST和GET请求? (A)访问(B)的URL是什么样的? 谢谢大家。