คำถามติดแท็ก httpurlconnection

อินสแตนซ์ HttpURLConnection ถูกใช้เพื่อสร้างคำขอเดียว แต่การเชื่อมต่อเครือข่ายพื้นฐานกับเซิร์ฟเวอร์ HTTP อาจถูกแชร์โดยอินสแตนซ์อื่น

11
วิธีใช้ java.net.URLConnection เพื่อเริ่มและจัดการคำขอ HTTP
ใช้java.net.URLConnectionถูกถามเกี่ยวกับที่นี่มักจะสวยและออราเคิลกวดวิชาเป็นเกินไปรัดกุมเกี่ยวกับมัน บทช่วยสอนนั้นโดยทั่วไปจะแสดงวิธีการเริ่มคำขอ GET และอ่านการตอบสนอง มันไม่ได้อธิบายว่าจะใช้ที่ใดในที่อื่น ๆ เพื่อดำเนินการตามคำขอ POST ตั้งค่าส่วนหัวคำขออ่านส่วนหัวตอบสนองจัดการกับคุกกี้ส่งแบบฟอร์ม HTML อัปโหลดไฟล์ ฯลฯ ดังนั้นฉันjava.net.URLConnectionจะใช้เพื่อดำเนินการและจัดการคำขอ HTTP "ขั้นสูง" ได้อย่างไร

17
Java - การส่งพารามิเตอร์ HTTP ผ่านวิธี POST ได้อย่างง่ายดาย
ฉันใช้รหัสนี้ในการส่ง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(); } ตอนนี้ฉันอาจต้องส่งพารามิเตอร์ (เช่น param1, param2, param3) ผ่านPOSTmethod เพราะมันยาวมาก ฉันคิดว่าจะเพิ่มพารามิเตอร์พิเศษให้กับวิธีการนั้น (เช่น String httpMethod) ฉันจะเปลี่ยนรหัสด้านบนให้น้อยที่สุดเพื่อให้สามารถส่งพารามิเตอร์ผ่านGETหรือได้POSTอย่างไร ฉันหวังว่าการเปลี่ยนแปลง connection.setRequestMethod("GET"); ถึง connection.setRequestMethod("POST"); จะได้ทำเคล็ดลับ แต่พารามิเตอร์ยังคงถูกส่งผ่านวิธีการ GET มีHttpURLConnectionวิธีใดบ้างที่จะช่วยได้บ้าง? มีการสร้าง …

15
วิธีเพิ่มพารามิเตอร์ใน HttpURLConnection โดยใช้ POST โดยใช้ NameValuePair
ฉันกำลังพยายามทำ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เพื่อเชื่อมต่อกับบริการเว็บ ฉันรู้วิธีใช้HTTPURLConnectionแต่ฉันอยากเข้าใจว่ามันทำงานอย่างไร โดยทั่วไปฉันต้องการทราบสิ่งต่อไปนี้: จุดใดที่HTTPURLConnectionพยายามสร้างการเชื่อมต่อกับ URL ที่ระบุ จุดใดที่ฉันสามารถรู้ได้ว่าฉันสามารถสร้างการเชื่อมต่อได้สำเร็จ กำลังสร้างการเชื่อมต่อและส่งคำขอจริงในขั้นตอนเดียว / วิธีการโทรหรือไม่? วิธีการคืออะไร? คุณสามารถอธิบายการทำงานของgetOutputStreamและgetInputStreamในระยะของคนธรรมดาได้หรือไม่? ฉันสังเกตเห็นว่าเมื่อเซิร์ฟเวอร์ที่ฉันพยายามเชื่อมต่อหยุดทำงานฉันจะได้รับExceptionที่getOutputStream. หมายความว่าHTTPURLConnectionจะเริ่มสร้างการเชื่อมต่อเมื่อฉันเรียกใช้เท่านั้นgetOutputStream? แล้วgetInputStreamล่ะ? เนื่องจากฉันสามารถรับคำตอบได้ที่getInputStreamนั่นหมายความว่าฉันยังไม่ได้ส่งคำขอใด ๆgetOutputStreamเลย แต่เพียงแค่สร้างการเชื่อมต่อ ทำHttpURLConnectionกลับไปยังเซิร์ฟเวอร์เพื่อร้องขอสำหรับการตอบสนองเมื่อฉันเรียกgetInputStream? ฉันถูกต้องหรือไม่ที่จะบอกว่าopenConnectionสร้างวัตถุเชื่อมต่อใหม่ แต่ยังไม่ได้สร้างการเชื่อมต่อ ฉันจะวัดค่าใช้จ่ายในการอ่านและเชื่อมต่อค่าโสหุ้ยได้อย่างไร

9
จะส่งคำขอ PUT, DELETE HTTP ใน HttpURLConnection ได้อย่างไร?
ฉันต้องการทราบว่าเป็นไปได้ไหมที่จะส่งคำขอ PUT, DELETE (ในทางปฏิบัติ) ผ่านjava.net.HttpURLConnectionไปยัง URL ที่ใช้ HTTP ฉันได้อ่านบทความมากมายที่อธิบายถึงวิธีการส่งคำขอ GET, POST, TRACE, OPTIONS แต่ฉันยังไม่พบโค้ดตัวอย่างใดที่ดำเนินการตามคำขอ PUT และ DELETE ได้สำเร็จ

12
การเชื่อมต่อกับรีโมต URL ซึ่งต้องการการพิสูจน์ตัวตนโดยใช้ Java
ฉันจะเชื่อมต่อกับ URL ระยะไกลใน Java ซึ่งต้องมีการพิสูจน์ตัวตนได้อย่างไร ฉันกำลังพยายามหาวิธีแก้ไขรหัสต่อไปนี้เพื่อให้สามารถระบุชื่อผู้ใช้ / รหัสผ่านโดยทางโปรแกรมเพื่อไม่ให้เกิด 401 URL url = new URL(String.format("http://%s/manager/list", _host + ":8080")); HttpURLConnection connection = (HttpURLConnection)url.openConnection();

10
การส่งไฟล์โดยใช้ POST ด้วย HttpURLConnection
เนื่องจากนักพัฒนา Android แนะนำให้ใช้HttpURLConnectionคลาสนี้ฉันจึงสงสัยว่าจะมีใครสามารถให้ตัวอย่างที่ดีเกี่ยวกับวิธีการส่ง "ไฟล์" บิตแมป (จริงๆแล้วเป็นสตรีมในหน่วยความจำ) ผ่าน POST ไปยังเซิร์ฟเวอร์ Apache HTTP ฉันไม่สนใจคุกกี้หรือการพิสูจน์ตัวตนหรืออะไรที่ซับซ้อน แต่ฉันแค่ต้องการให้มีการใช้งานที่เชื่อถือได้และมีตรรกะ ตัวอย่างทั้งหมดที่ฉันได้เห็นในที่นี้ดูเหมือนว่า "ลองดูสิแล้วอาจจะได้ผล" ตอนนี้ฉันมีรหัสนี้: 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(); } } …

7
FileNotFoundException ขณะรับวัตถุ InputStream จาก HttpURLConnection
ฉันพยายามส่งคำขอโพสต์ไปยัง url โดยใช้ HttpURLConnection (สำหรับการใช้ cUrl ใน java) เนื้อหาของคำร้องขอคือ 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); …

3
จะรับเนื้อหาตอบสนองโดยใช้ HttpURLConnection ได้อย่างไรเมื่อส่งคืนรหัสอื่นที่ไม่ใช่ 2xx
ฉันมีปัญหาในการดึงการตอบสนอง 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(); ... และปัญหาคือ: ฉันไม่สามารถดึงข้อมูล Json ที่ได้รับเมื่อเซิร์ฟเวอร์ส่งคืนข้อผิดพลาดบางอย่างเช่น 50x หรือ 40x บรรทัดต่อไปนี้พ่น IOException: br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); …

5
คำขอ POST ส่งข้อมูล json java HttpUrlConnection
ฉันได้พัฒนาโค้ด java ที่แปลง cURL ต่อไปนี้เป็นโค้ด java โดยใช้ URL และ HttpUrlConnection 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 ฉันไม่พบสิ่งที่ขาดหายไป 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"); …

6
HTTPURLConnection ไม่ติดตามการเปลี่ยนเส้นทางจาก HTTP ไปยัง HTTPS
ฉันไม่เข้าใจว่าเหตุใด Java HttpURLConnectionจึงไม่ติดตามการเปลี่ยนเส้นทาง HTTP จาก HTTP ไปยัง HTTPS URL ฉันใช้รหัสต่อไปนี้เพื่อรับหน้าเว็บที่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(); …

8
อ่านเนื้อหาการตอบสนองข้อผิดพลาดใน Java
ใน Java รหัสนี้แสดงข้อยกเว้นเมื่อผลลัพธ์ HTTP คือช่วง 404: URL url = new URL("http://stackoverflow.com/asdf404notfound"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.getInputStream(); // throws! ในกรณีของฉันฉันรู้ว่าเนื้อหาเป็น 404 แต่ฉันก็ยังอยากอ่านเนื้อหาของคำตอบอยู่ดี (ในกรณีจริงของฉันรหัสตอบกลับคือ 403 แต่เนื้อหาของการตอบกลับอธิบายเหตุผลของการปฏิเสธและฉันต้องการแสดงให้ผู้ใช้เห็น) ฉันจะเข้าถึงเนื้อหาตอบสนองได้อย่างไร?

3
อัปโหลด arraylist โดยใช้ httpurlconnection multipart / form-data
ฉันต้องการอัปโหลดArraylistภาพไปยังเซิร์ฟเวอร์โดยไม่ต้องใช้ห้องสมุดใด ๆ ฉันใช้Asynctaskเพื่ออัปโหลดภาพเดียวและทำงานได้อย่างสมบูรณ์ด้วยความช่วยเหลือของ httpurlconnection multipart / form-data ตอนนี้ฉันต้องเปลี่ยนรหัสของฉันเพื่ออัปโหลดไฟล์หลายประเภททุกประเภทโดยใช้Arraylist<String>แต่ปัญหาของฉันคือรหัสที่มีอยู่FileinputStreamไม่รองรับ arraylist และฉันไม่รู้ว่าจะใช้อะไรแทนที่จะFileinputstreamอัปโหลด arraylist ไปยังเซิร์ฟเวอร์และฉันไม่ได้ ต้องการใช้ไลบรารีใดก็ได้สำหรับสิ่งนี้ public class multipart_test extends AsyncTask<Void,Void,String> { Context context; String Images; public static final String TAG = "###Image Uploading###"; public multipart_test(Context context,String Upload_Images) { this.context = context; this.Images = Upload_Images; } @Override protected String doInBackground(Void... params) { BufferedReader …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.