Articles of httpclient

Android:无效使用SingleClientConnManager:连接仍然分配

可能重复: 使用HttpRequest.execute()的exception:无效使用SingleClientConnManager:仍然分配了连接 我在Android工作。 我创建了HttpSingleton类来在我的完整应用程序中创建HttpClient的单个intance。 这是我使用这个类的代码: – HttpGet get = new HttpGet(“url/dologin/savitagupta/savitagupta”); **HttpResponse rp = HttpSigleton.getInstance().execute(get);** if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // some code here } 这是我的单例实例 public class HttpSigleton { private static HttpClient instance = null; protected HttpSigleton() { } public static HttpClient getInstance() { if(instance == null) { instance =new DefaultHttpClient(); } return instance; […]

在Java httpclient中设置用户代理并允许重定向为true

我试图在Java中的HttpClient apache对象中设置我的用户代理字符串,但我无法find如何做到这一点。 请帮忙! 此外,我试图将重定向设置为true,但也无法在HttpClient对象中find此选项。 谢谢 安迪

使用HttpClient在Android中重用SSL会话

我在使用HttpClient在Android上恢复SSL会话时遇到了很多困难。 我每隔90秒轮询一次服务器(仅适用于只有一个function的工业设备),所以我需要恢复会话,否则数据使用从每小时几KB到最高150-200kB,这是不可持续的。 服务器是在Restlet中嵌入Jetty,并且当我使用OpenSSL测试它时支持恢复SSL会话。据我所知。 我正在重用我的HttpClient对象,所以不是那样的。 Android有一个特定的SSLCertificateSocketFactory,我也尝试了它,它似乎也没有用。 有什么我在这里完全不见了? 我假设HttpClient会自动执行此操作,我不确定我做错了什么,互联网上似乎没有人遇到类似的问题。 我通过以下方式设置了httpClient: public HttpClient getNewHttpClient(Context context) { try { HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); HttpConnectionParams.setStaleCheckingEnabled(params, false); HttpConnectionParams.setConnectionTimeout(params, 4 * 1000); HttpConnectionParams.setSoTimeout(params, 5 * 1000); HttpConnectionParams.setSocketBufferSize(params, 8192); HttpClientParams.setRedirecting(params, false); SSLSessionCache sslSession = new SSLSessionCache(context); SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80)); registry.register(new Scheme(“https”, SSLCertificateSocketFactory.getHttpSocketFactory(10*60*1000, […]

HttpClient.execute抛出OutOfMemoryError

我有一个Android应用程序,它使用ByteArrayEntity对象将JSONObject作为实体发布。 这是它的样子: post.setEntity(new ByteArrayEntity(entity.getBytes(“UTF-8”))); result = client.execute(post, handler); 实体是一个String 。 处理程序是ResponseHandler ,客户端是HttpClient 。 这在模拟器和某些设备上运行良好。 但是,有时我在x10i (也称为XPERIA)上执行时会出现OutOfMemoryError。 这是堆栈: java.lang.OutOfMemoryError at org.apache.http.impl.io.AbstractSessionInputBuffer.init(AbstractSessionInputBuffer.java:79) at org.apache.http.impl.io.SocketInputBuffer.(SocketInputBuffer.java:93) at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83) at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170) at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106) at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:171) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:580) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:678) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:652) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) at com.test.application.api.Request.post(Request.java:102) at com.test.application.api.API.getResult(API.java:123) at com.test.application.api.APITask.doInBackground(APITask.java:127) at com.test.application.api.APITask.doInBackground(APITask.java:1) at […]

有没有办法通过HttpUrlConncetion正确上传进度

Android开发者博客建议使用除apache的HttpClient之外的HttpURLConnection ( http://android-developers.blogspot.com/2011/09/androids-http-clients.html )。 我接受了建议,并在报告文件上传进度时遇到问题。 我抓住进度的代码是这样的: try { out = conncetion.getOutputStream(); in = new BufferedInputStream(fin); byte[] buffer = new byte[MAX_BUFFER_SIZE]; int r; while ((r = in.read(buffer)) != -1) { out.write(buffer, 0, r); bytes += r; if (null != mListener) { long now = System.currentTimeMillis(); if (now – lastTime >= mListener.getProgressInterval()) { lastTime = now; if […]

为什么我在Android中获得不同的HttpResponse而不是浏览器?

我试图从这个URL获得简单的HTTP响应: http : //realtorsipad.demowebsiteonline.net/eventsfeed.php 但令人惊讶的是,它没有返回预期的XML响应而是返回另一个HTML页面! 我无法理解什么是问题。 以下是示例活动: public class MainActivity1 extends Activity { String parsingWebURL = “http://realtorsipad.demowebsiteonline.net/eventsfeed.php”; String line = “”; Document docXML; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); line = getXML(); System.out.println(line); } // ———————————————— public String getXML() { String strXML = “”; […]

Android错误:MultipartEntity,客户端发送的请求在语法上是不正确的

我想通过安全的restful web服务发送歌曲(mp3 / wav)文件和一些数据。 我正在使用MultipartEntity来发出HttpPost请求。 但是当我通过HttpClient执行它时,服务器会回复此错误 HTTP状态400 – 错误请求types:状态报告消息:错误请求客户端发送的请求在语法上不正确(错误请求)。 但是,如果我们从Web界面调用它,那么该服务的效果非常好。 请帮忙 它的代码 HttpClient httpclient = new DefaultHttpClient(); HttpPost postRequest = new HttpPost(); try { MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart(“email”, new StringBody(“test@testmail.com”)); reqEntity.addPart(“password”, new StringBody(“123”)); reqEntity.addPart(“title”, new StringBody(“My new song”)); reqEntity.addPart(“musicData”, new FileBody(new File(FilePath))); // FIlePath is path to file and contains correct file location […]

在Android上使用HttpPost和DefaultHttpClient时出现身份validation错误

我正在使用HttpClient遇到一个奇怪的问题。 我正在使用带有HttpPost的DefaultHttpClient()。 我正在使用HttpGet 100%成功但现在尝试切换到HttpPost,因为我正在使用的REST API需要POST参数而不是GET。 (仅限于一些API调用,所以我知道GET调用工作正常,因此它不是API的错误)。 此外,我尝试在我编写的一个简单的PHP脚本上使用HttpPost查找POST参数’var’并将其回显到屏幕,传递此参数如下工作正常: List nameValuePairs = new ArrayList(); postMethod = new HttpPost(“http://www.examplewebsite.com”); nameValuePairs.add(new BasicNameValuePair(“var”, “lol”)); try { postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs)); response = httpClient.execute(postMethod, responseHandler); Log.i(“RESTMethod”, response); … 问题是,当我尝试对API执行相同的调用时(但是明显将params更改为API参数),我收到以下错误: Authentication error: Unable to respond to any of these challenges: {} 我请求的页面是一个HTTPS页面,这可能是问题吗? 但是对API上的原始HTTP页面执行相同types的POST请求会产生相同的错误,除非我注释掉StringEntity部分然后它运行(但返回xml并且我想传递一个参数来请求JSON中的数据) 。 这似乎是一个非常奇怪的问题(非https部分),但无法真正find任何有关此问题的帮助,所以很抱歉,如果答案在那里。 有任何想法吗? 提前致谢, Infinitifzz 编辑:好的,我无处可去,所以我想如果我引导你进入API,它可能会有所帮助,这是8Tracks API ,你可以看到你需要为所有请求传递一个开发键(api_key)而我的部分我坚持使用https来记录用户: http : //www.8tracks.com/sessions.xml […]

C#:ModernHttpClient,您在应用程序中引用了Portable版本 – 您需要引用平台(iOS / Android)版本

我正在使用ModernHttpClient库,我试图从httpClient的响应中获取Cookie public static async Task loginUser() { var values = new List<KeyValuePair> { new KeyValuePair(“username”, “*****”), new KeyValuePair(“password”, “*****”), }; NativeCookieHandler cookieHandler = new NativeCookieHandler(); NativeMessageHandler messageHandler = new NativeMessageHandler(false, false, cookieHandler); var httpClient = new HttpClient(messageHandler); var response = await httpClient.PostAsync(RestApiPaths.LOGIN, new FormUrlEncodedContent(values)); response.EnsureSuccessStatusCode(); String resultString = await response.Content.ReadAsStringAsync(); System.Diagnostics.Debug.WriteLine(“resultString: ” + resultString); IEnumerable […]

Logcat在每次DefaultHttpClient执行方法调用期间打印“interface name:null”

我多次联系Web服务以通过HttpGet和DefaultHttpClient获取JSON字符串。 … DefaultHttpClient defaultHttpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = (HttpResponse)defaultHttpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); … 我发现LogCat是打印接口名称:null ,标签为System.out ,每次HttpResponse httpResponse = (HttpResponse)defaultHttpClient.execute(httpGet); 被执行。 我是否正确使用HttpGet建立此http连接? 有不同的方式吗? 如何创建此连接而不是获取接口名称:来自System.out标记的null LogCat消息?