Tag: httpurlconnection

获取java.net.SocketTimeoutException:连接在android中超时

我对android开发比较陌生。 我正在开发一个Android应用程序,我发送请求到Web服务器和parsingJSON对象。 经常我得到java.net.SocketTimeoutException: Connection timed out与服务器通信java.net.SocketTimeoutException: Connection timed outexception。 有些时候它可以完美的工作,没有任何问题。 我知道这个问题在很多时候都被问过了。 但是,我仍然没有得到任何令人满意的解决这个问题。 我在下面发布我的logcat和app-server通信代码。 public JSONObject RequestWithHttpUrlConn(String _url, String param){ HttpURLConnection con = null; URL url; String response = ""; Scanner inStream = null; PrintWriter out = null; try { url = new URL(_url); con = (HttpURLConnection) url.openConnection(); con.setDoOutput(true); con.setRequestMethod("POST"); if(param != null){ con.setFixedLengthStreamingMode(param.getBytes().length); } con.setRequestProperty("Content-Type", […]

在Java中读取错误响应主体

在Java中,当HTTP结果为404范围时,此代码将引发exception: URL url = new URL("http://stackoverflow.com/asdf404notfound"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.getInputStream(); // throws! 就我而言,我碰巧知道内容是404,但是我仍然喜欢读取响应的主体。 (在我的实际情况下,响应代码是403,但是响应的主体解释了拒绝的原因,我想将其显示给用户。) 我如何访问响应主体?

POST请求发送json数据java HttpUrlConnection

我已经开发了一个java代码,使用URL和HttpUrlConnection将下面的cURL转换为java代码。 curl是: curl -i 'http://url.com' -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{"auth": { "passwordCredentials": {"username": "adm", "password": "pwd"},"tenantName":"adm"}}' 我已经写了这个代码,但它总是给HTTP代码400不好的请求。 我找不到缺less的东西。 String url="http://url.com"; URL object=new URL(url); HttpURLConnection con = (HttpURLConnection) object.openConnection(); con.setDoOutput(true); con.setDoInput(true); con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("Accept", "application/json"); con.setRequestMethod("POST"); JSONObject cred = new JSONObject(); JSONObject auth = new JSONObject(); JSONObject parent = new JSONObject(); […]

FileNotFoundException从HttpURLConnection获取InputStream对象

我想发送一个URL使用HttpURLConnection(在Java中使用cUrl)发送请求。 请求的内容是xml,在结束点,应用程序处理xml并将logging存储到数据库,然后以xmlstring的forms发回响应。 该应用程序在本地托pipe在apache-tomcat上。 当我从terminal执行这个代码时,一行被按预期添加到数据库。 但从连接中获取InputStream时会引发exception java.io.FileNotFoundException: http://localhost:8080/myapp/service/generate at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1401) at org.kodeplay.helloworld.HttpCurl.main(HttpCurl.java:30) 这是代码 public class HttpCurl { public static void main(String [] args) { HttpURLConnection con; try { con = (HttpURLConnection) new URL("http://localhost:8080/myapp/service/generate").openConnection(); con.setRequestMethod("POST"); con.setDoOutput(true); con.setDoInput(true); File xmlFile = new File("test.xml"); String xml = ReadWriteTextFile.getContents(xmlFile); con.getOutputStream().write(xml.getBytes("UTF-8")); InputStream response = con.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(response)); […]

你能解释一下HttpURLConnection的连接过程吗?

我正在使用HTTPURLConnection连接到Web服务。 我知道如何使用HTTPURLConnection但我想了解它是如何工作的。 基本上,我想知道以下几点: HTTPURLConnection试图build立到给定URL的连接? 我能在哪一点知道我能够成功build立连接? 正在build立一个连接,并发送一个步骤/方法调用完成的实际请求? 它是什么方法? 你能解释一下getOutputStream和getInputStream的外行人的function吗? 我注意到,当我试图连接的服务器closures时, getOutputStream出现Exception 。 这是否意味着当我调用getOutputStream时, HTTPURLConnection才会开始build立连接? getInputStream怎么样? 因为我只能得到在getInputStream响应,那么这是否意味着我没有发送任何请求在getOutputStream ,但只是build立一个连接? 当我调用getInputStream时, HttpURLConnection是否会回到服务器请求响应? 我正确地说, openConnection只是创build一个新的连接对象,但不build立任何连接呢? 我如何测量读取开销和连接开销?

如何处理HTTP身份validation使用HttpURLConnection?

我正在写一个Java客户端,POST到需要validation的HTTP服务器。 我必须至less支持以下三种身份validation方法:基本,摘要或协商。 此外,POST可能非常大(超过2MB),所以我需要使用stream式传输。 正如HttpURLConnection所logging的那样 当启用输出stream时,authentication和redirect不能自动处理。 读取响应时,如果需要validation或redirect,则会引发HttpRetryException。 所以,我需要自己处理身份validation。 我search了一遍,再次search,find了一种方法来使用已经编码好的类,但是却找不到方法… 我可以从这里采摘所需的源代码(因为它们是带有Classpathexception的GPLv2)。 这是正确的吗? 谢谢。

HttpEntity在Android上已经被弃用了,有什么select?

随着Android 5.1的发布,它看起来像所有的Apache HTTP的东西已被弃用。 看文档是没用的; 他们都说 This class was deprecated in API level 22. Please use openConnection() instead. Please visit this webpage for further details. 当你第一次阅读它时是好的,但是当每个被弃用的类都这样说的时候,这并没有什么帮助。 无论如何,像HttpEntity类,特别是StringEntity和MultipartEntity类的替代品是什么? 我用BasicNameValuePair替代了Android的Pair<T, S>类,它看起来像URLEncoder.encode是URLEncoder.encode的一个很好的替代品,但我不确定如何处理HttpEntity 。 编辑 我决定只是重新写networking的东西。 要尝试使用Retrofit和OkHttp 编辑 认真看看切换你的电话和东西改造。 相当漂亮。 我很高兴我做到了。 有几个障碍,但很酷。

HttpURLConnection.getResponseCode()在第二次调用时返回-1

当我使用一个库(路标1.1-SNAPSHOT)时,我似乎遇到了Android 1.5上的一个特殊问题,它连续连接到远程服务器。 第二个连接始终以-1的HttpURLConnection.getResponseCode()失败 这是一个暴露这个问题的testing用例: // BROKEN public void testDefaultOAuthConsumerAndroidBug() throws Exception { for (int i = 0; i < 2; ++i) { final HttpURLConnection c = (HttpURLConnection) new URL("https://api.tripit.com/oauth/request_token").openConnection(); final DefaultOAuthConsumer consumer = new DefaultOAuthConsumer(api_key, api_secret, SignatureMethod.HMAC_SHA1); consumer.sign(c); // This line… final InputStream is = c.getInputStream(); while( is.read() >= 0 ) ; // … in […]

从HttpURLConnection对象parsingJSON

我正在用Java中的HttpURLConnection对象进行基本的httpauthentication。 URL urlUse = new URL(url); HttpURLConnection conn = null; conn = (HttpURLConnection) urlUse.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Content-length", "0"); conn.setUseCaches(false); conn.setAllowUserInteraction(false); conn.setConnectTimeout(timeout); conn.setReadTimeout(timeout); conn.connect(); if(conn.getResponseCode()==201 || conn.getResponseCode()==200) { success = true; } 我期待一个JSON对象,或有效的JSON对象格式的string数据,或简单的纯文本是有效的JSON的HTML。 在返回响应后,如何从HttpURLConnection访问它?

HttpURLConnection在Android 2.x中工作正常,但在4.1中没有:没有发现身份validation的挑战

我有一些典型的代码使用HttpURLConnection获得一个URL的文件。 他们在Android 1.x和2.x中工作正常。 但在Android 4.1失败! 我在网上search,但发现一些类似的信息。 有人请帮忙调查这个问题吗? private String mURLStr; private HttpURLConnection mHttpConnection; … url = new URL(mURLStr); … mHttpConnection = (HttpURLConnection) url.openConnection(); mHttpConnection.setDoOutput(true); mHttpConnection.setRequestMethod("GET"); … InputStream is = mHttpConnection.getInputStream(); getInputStream方法抛出一个exception: 08-01 15:56:48.856: W/System.err(13613): java.io.IOException: No authentication challenges found 08-01 15:56:48.856: W/System.err(13613): at libcore.net.http.HttpURLConnectionImpl.getAuthorizationCredentials(HttpURLConnectionImpl.java:427) 08-01 15:56:48.866: W/System.err(13613): at libcore.net.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:407) 08-01 15:56:48.866: W/System.err(13613): at libcore.net.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:356) 08-01 […]