Questions tagged «httpurlconnection»

HttpURLConnection实例用于发出单个请求,但与HTTP服务器的基础网络连接可以由其他实例透明共享。

11
如何使用java.net.URLConnection触发和处理HTTP请求?
java.net.URLConnection在这里经常会问到使用的情况,而Oracle教程对此却过于简洁。 该教程基本上仅显示如何触发GET请求并读取响应。它没有任何地方解释如何使用它来执行POST请求,设置请求标头,读取响应标头,处理cookie,提交HTML表单,上传文件等。 因此,如何使用它java.net.URLConnection来触发和处理“高级” HTTP请求?

17
Java-通过POST方法轻松发送HTTP参数
我成功使用此代码HTTP通过GET方法发送 带有某些参数的请求 void sendRequest(String request) { // i.e.: request = "http://example.com/index.php?param1=a&param2=b&param3=c"; URL url = new URL(request); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setInstanceFollowRedirects(false); connection.setRequestMethod("GET"); connection.setRequestProperty("Content-Type", "text/plain"); connection.setRequestProperty("charset", "utf-8"); connection.connect(); } 现在,我可能需要通过POST方法发送参数(即param1,param2,param3),因为它们很长。我在想为该方法添加一个额外的参数(即String httpMethod)。 我如何才能尽可能少地更改上面的代码,以便能够通过GET或发送参数POST? 我希望改变 connection.setRequestMethod("GET"); 至 connection.setRequestMethod("POST"); 本来可以解决问题的,但是参数仍然通过GET方法发送。 有HttpURLConnection没有什么方法会有所帮助?有没有有用的Java构造? 任何帮助将不胜感激。

15
如何使用NameValuePair使用POST将参数添加到HttpURLConnection
我试图做POST与HttpURLConnection(我需要使用这种方式,不能使用HttpPost),我想参数添加到连接如 post.setEntity(new UrlEncodedFormEntity(nvp)); 哪里 nvp = new ArrayList<NameValuePair>(); 。具有存储一些数据,我不能找到一种方法如何将这个添加ArrayList到我HttpURLConnection这是在这里: HttpsURLConnection https = (HttpsURLConnection) url.openConnection(); https.setHostnameVerifier(DO_NOT_VERIFY); http = https; http.setRequestMethod("POST"); http.setDoInput(true); http.setDoOutput(true); 麻烦的https和http组合的原因是不需要验证证书。但这不是问题,它可以很好地发布服务器。但是我需要它来发布参数。 有任何想法吗? 重复免责声明: 早在2012年,我还不知道如何将参数插入到HTTP POST请求中。我一直坚持下去,NameValuePair因为它在教程中。这个问题似乎有点重复,但是,我2012年的自我读过另一个问题,但没有使用NameValuePair。实际上,它并不能解决我的问题。

5
您可以解释HttpURLConnection连接过程吗?
我正在HTTPURLConnection用来连接到Web服务。我知道如何使用,HTTPURLConnection但我想了解它的工作原理。基本上,我想了解以下内容: HTTPURLConnection尝试在哪一点建立与给定URL的连接? 我可以在哪一点上知道可以成功建立连接? 建立连接并发送实际请求的步骤/方法调用是否完成?这是什么方法 你能解释的功能getOutputStream和getInputStream外行的任期?我注意到当我尝试连接的服务器出现故障时,我会收到Exceptionat getOutputStream。这是否意味着HTTPURLConnection仅在我调用时才开始建立连接getOutputStream?怎么样getInputStream?由于我只能在处获得响应getInputStream,那么这是否意味着我尚未发送任何请求,getOutputStream而只是建立了连接?HttpURLConnection调用时,是否返回服务器请求响应getInputStream? 我是否正确地说那openConnection只是创建一个新的连接对象,但还没有建立任何连接? 如何测量读取开销和连接开销?


12
连接到需要使用Java进行身份验证的远程URL
如何连接到Java中需要身份验证的远程URL。我正在尝试寻找一种方法来修改以下代码,以便能够以编程方式提供用户名/密码,从而不会抛出401。 URL url = new URL(String.format("http://%s/manager/list", _host + ":8080")); HttpURLConnection connection = (HttpURLConnection)url.openConnection();

10
使用POST和HttpURLConnection发送文件
由于Android开发人员建议使用HttpURLConnection该类,所以我想知道是否有人可以为我提供一个很好的示例,说明如何通过POST将位图“文件”(实际上是内存中的流)通过POST发送到Apache HTTP服务器。我对Cookie或身份验证或任何复杂的事物不感兴趣,但我只想拥有可靠的逻辑实现。我在这里看到的所有示例看起来都更像是“让我们尝试一下,也许行得通”。 现在,我有以下代码: URL url; HttpURLConnection urlConnection = null; try { url = new URL("http://example.com/server.cgi"); urlConnection = (HttpURLConnection) url.openConnection(); } catch (Exception e) { this.showDialog(getApplicationContext(), e.getMessage()); } finally { if (urlConnection != null) { urlConnection.disconnect(); } } 在哪里showDialog应该只显示一个AlertDialog(如果URL无效?)。 现在,让我们说我生成了一个像这样的位图:Bitmap image = this.getBitmap()在派生自控件的控件中View,我想通过POST发送它。实现这种目标的正确程序是什么?我需要使用什么课程?我可以HttpPost在此示例中使用吗?如果是这样,我将如何InputStreamEntity为我的位图构造?我会发现首先将位图存储在设备上的文件中是必需的。 我还应该提到,我确实需要将原始位图的所有未更改的像素发送到服务器,因此无法将其转换为JPEG。

7
从HttpURLConnection获取InputStream对象时发生FileNotFoundException
我正在尝试使用HttpURLConnection(在Java中使用cUrl)将发布请求发送到url。请求的内容为xml,最后,应用程序处理xml并将记录存储到数据库,然后以xml字符串的形式发送回响应。该应用程序本地托管在apache-tomcat上。 当我从终端执行此代码时,将按预期将一行添加到数据库。但是,从连接获取InputStream时会引发如下异常 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 …

5
POST请求发送json数据java HttpUrlConnection
我已经开发了一个Java代码,该代码使用URL和HttpUrlConnection将以下cURL转换为Java代码。卷曲是: 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错误的请求。我找不到丢失的东西。 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 …

6
HTTPURLConnection不跟随从HTTP重定向到HTTPS
我不明白为什么Java HttpURLConnection不会遵循从HTTP到HTTPS URL的HTTP重定向。我使用以下代码在https://httpstat.us/上获取页面: import java.net.URL; import java.net.HttpURLConnection; import java.io.InputStream; public class Tester { public static void main(String argv[]) throws Exception{ InputStream is = null; try { String httpUrl = "http://httpstat.us/301"; URL resourceUrl = new URL(httpUrl); HttpURLConnection conn = (HttpURLConnection)resourceUrl.openConnection(); conn.setConnectTimeout(15000); conn.setReadTimeout(15000); conn.connect(); is = conn.getInputStream(); System.out.println("Original URL: "+httpUrl); System.out.println("Connected to: …

3
返回2xx以外的代码时,如何使用HttpURLConnection获取响应主体?
当服务器返回错误时,我在检索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 …

8
读取Java中的错误响应正文
在Java中,当HTTP结果为404范围时,此代码将引发异常: URL url = new URL("http://stackoverflow.com/asdf404notfound"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.getInputStream(); // throws! 就我而言,我碰巧知道内容是404,但无论如何我还是想阅读响应的内容。 (在我的实际情况下,响应代码为403,但是响应的主体说明了拒绝的原因,我希望向用户显示该信息。) 如何访问响应正文?

16
HttpURLConnection无效的HTTP方法:PATCH
当我尝试使用非标准的HTTP方法(例如PATCH和URLConnection)时: HttpURLConnection conn = (HttpURLConnection) new URL("http://example.com").openConnection(); conn.setRequestMethod("PATCH"); 我有一个例外: java.net.ProtocolException: Invalid HTTP method: PATCH at java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:440) 使用较高级别的API(例如Jersey)会产生相同的错误。是否存在发布PATCH HTTP请求的解决方法?

8
获取java.net.SocketTimeoutException:Android中的连接超时
我是android开发的新手。我正在开发一个android应用程序,其中我向Web服务器发送请求并解析json对象。我经常java.net.SocketTimeoutException: Connection timed out在与服务器通信时遇到异常。有时它会完美地工作而不会出现任何问题。我知道这个问题已经问过很多次了。但是我仍然没有得到令人满意的解决方案。我在下面发布了我的logcat和应用程序服务器通信代码。 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", "application/x-www-form-urlencoded"); out = new …

6
Android下载二进制文件问题
我在从互联网上下载我的应用程序中的二进制文件时遇到问题。在Quicktime中,如果我直接下载它,则可以正常工作,但是通过我的应用程序,它会以某种方式混乱(即使它们在文本编辑器中看起来完全一样)。这是一个例子: URL u = new URL("http://www.path.to/a.mp4?video"); HttpURLConnection c = (HttpURLConnection) u.openConnection(); c.setRequestMethod("GET"); c.setDoOutput(true); c.connect(); FileOutputStream f = new FileOutputStream(new File(root,"Video.mp4")); InputStream in = c.getInputStream(); byte[] buffer = new byte[1024]; int len1 = 0; while ( (len1 = in.read(buffer)) > 0 ) { f.write(buffer); } f.close();

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.