Tag: httpurlconnection

如何在Java中发送Https Post请求

我想从Java代码login到应用程序。 这是我的代码… String httpsURL = "https://www.abcd.com/auth/login/"; String query = "email="+URLEncoder.encode("abc@xyz.com","UTF-8"); query += "&"; query += "password="+URLEncoder.encode("abcd","UTF-8") ; URL myurl = new URL(httpsURL); HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Content-length", String.valueOf(query.length())); con.setRequestProperty("Content-Type","application/x-www- form-urlencoded"); con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0;Windows98;DigExt)"); con.setDoOutput(true); con.setDoInput(true); DataOutputStream output = new DataOutputStream(con.getOutputStream()); output.writeBytes(query); output.close(); DataInputStream input = new DataInputStream( con.getInputStream() ); for( int c […]

IOException:“接收到的身份validation请求为空”(Apache Harmony / Android)

我想通过Android的HttpURLConnection(这是一个org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)发送一个GET,并在收到响应后,抛出一个IOException: 在doRequestInternal()中:“接收到的authentication质询为空” 这个错误是什么意思,是什么造成的? 我正在给授权标题写OAuth参数,但我也在其他场合也这样做,没有问题。 if (connection == null) { connection = (HttpURLConnection) new URL(endpointUrl).openConnection(); connection.setRequestMethod("GET"); } //… do some OAuth message signing connection.connect(); int statusCode = connection.getResponseCode(); // throws IOException

如何获得响应正文使用HttpURLConnection,当2xx以外的代码被返回?

这是我的第一个问题在堆栈上,我希望我会find一些帮助:) 我有检索JSON响应的情况下,当服务器返回错误的问题。 见下面的细节。 我如何执行请求 我使用java.net.HttpURLConnection 。 我设置请求属性,然后我做到: conn = (HttpURLConnection) url.openConnection(); 之后,当请求成功时,我得到了答复Json: br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); sb = new StringBuilder(); String output; while ((output = br.readLine()) != null) { sb.append(output); return sb.toString(); …问题是: 当服务器返回像50x或40x这样的错误时,我无法检索收到的Json。 以下行引发IOException: br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); // throws java.io.IOException: Server returned HTTP response code: 401 for URL: www.example.com 服务器发送正确的身体,我看到它在外部工具Burp套件: HTTP/1.1 […]

HttpURLConnection java.io.FileNotFoundException

我目前使用下面的代码。 我是这个新function,所以它可能只是简单的东西,但我似乎无法得到这个与我的服务器一起工作。 下面的代码很好,如果我连接似乎是Apache服务器,但是当我尝试连接到我的.Net服务器,它会引发错误。 我猜这是一个标题的要求,但似乎无论在哪里尝试,都无法取得成功。 public String Download(String Url) { String filepath=null; try { //set the download URL, a url that points to a file on the internet //this is the file to be downloaded URL url = new URL(Url); //create the new connection HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //set up some things on the connection […]

Android的HTTPUrlConnection:如何设置发布数据在http身上?

我已经创build了我的HTTPUrlConnection: String postData = "x=val1&y=val2"; URL url = new URL(strURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Set-Cookie", sessionCookie); conn.setRequestProperty("Content-Length", "" + Integer.toString(postData.getBytes().length)); // How to add postData as http body? conn.setUseCaches(false); conn.setDoInput(true); conn.setDoOutput(true); 我不知道如何在http身上设置postData。 怎么做? 我会更好地使用HttpPost吗? 谢谢你的帮助。

HttpURLConnection发送图像,audio和video文件的参数可能(string或JSONstring)的Android

我分享解决scheme发送图像 , audio或video文件使用HttpURLConnection参数。 参数可能是(普通string或JSON)。 (Android客户端到PHP后端) 场景:必须上传媒体文件(audio,video和图像参数)。 媒体文件将存储在一个服务器文件夹和参数分贝。 我遇到了一个问题,即在参数丢失的情况下 图像上传成功 。 find潜在的解决scheme 在这里推荐使用 HttpURLConnection而不是Httpclient 你可能想知道,哪个客户最好? Apache HTTP客户端在Eclair和Froyo上有更less的错误。 这是这些版本的最佳select。 对于姜饼和更好,HttpURLConnection是最好的select。 其简单的API和小尺寸使其非常适合Android。 透明压缩和响应caching减lessnetworking使用,提高速度并节省电池。 新的应用程序应该使用HttpURLConnection; 这是我们将在哪里花费我们的能量前进。 Android代码: public int uploadFile(final String sourceFileUri) { String fileName = sourceFileUri; HttpURLConnection conn = null; DataOutputStream dos = null; String lineEnd = "\r\n"; String twoHyphens = "–"; String boundary = "*****"; int bytesRead, […]

如何在HttpURLConnection上设置内容types?

你知道如何在HttpURLConnection上设置Content-Type吗? 下面的代码是在黑莓上,我想要Android的等效: connection.setRequestProperty("content-type", "text/plain; charset=utf-8"); connection.setRequestProperty("Host", "192.168.1.36"); connection.setRequestProperty("Expect", "100-continue"); 是否适合android? 请指教。

Android HttpsUrlConnection eofexception

我有一个问题,当我尝试读取任何input时,我的HttpsURLConnection将抛出一个EOFException。 该代码适用于某些networking调用,但在其他networking上失败。 如果我尝试从连接中读取任何内容,则会导致上述错误。 例: urlConnect.getResponseCode() // will throw error urlConnect.getResponseMessage() // will throw error BufferedInputStream in = new BufferedInputStream(urlConnect.getInputStream()); //will throw error 这里是每个的堆栈跟踪: GETRESPONSE: 03-14 09:49:18.547: W/System.err(6270): java.io.EOFException 03-14 09:49:18.547: W/System.err(6270): at libcore.io.Streams.readAsciiLine(Streams.java:203) 03-14 09:49:18.547: W/System.err(6270): at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:573) 03-14 09:49:18.547: W/System.err(6270): at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:821) 03-14 09:49:18.547: W/System.err(6270): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283) 03-14 09:49:18.547: W/System.err(6270): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:495) 03-14 09:49:18.547: […]

HttpURLConnection冰淇淋三明治FileNotFoundException

我有一个Android应用程序,可以在Android 2.x和3.x下正常工作,但在Android 4.x上运行时会失败。 问题出在这部分代码中: URL url = new URL("http://blahblah.blah/somedata.xml"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.connect(); InputStream inputStream = urlConnection.getInputStream(); 当应用程序在Android 4.x上运行时, getInputStream()调用将导致FileNotFoundException 。 当相同的二进制文件在早期版本的Android上运行时,它会成功。 这些url在网页浏览器中也可以正常工作,并且可以使用curl 。 显然,有关HttpURLConnection内容在ICS中已经发生了变化。 有没有人知道发生了什么变化,以及/或者修补程序可能是什么?

如何检查InputStream是否被压缩?

有什么办法来检查InputStream是否已被gzipped? 代码如下: public static InputStream decompressStream(InputStream input) { try { GZIPInputStream gs = new GZIPInputStream(input); return gs; } catch (IOException e) { logger.info("Input stream not in the GZIP format, using standard format"); return input; } } 我试过这种方式,但它不能按预期工作 – 从stream中读取的值是无效的。 编辑:添加了我用来压缩数据的方法: public static byte[] compress(byte[] content) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { GZIPOutputStream gs […]