إنشاء طلب نشر بيانات نموذج متعدد الأجزاء باستخدام Java
أدى ظهور Apache Commons HttpClient الإصدار 4.0 إلى إلغاء القدرة على تنفيذ طلبات POST متعددة الأجزاء/بيانات النموذج التي كانت ممكنة في الإصدار 3.x. أوضح فريق HttpClient أن الوظائف متعددة الأجزاء تقع خارج نطاق أنشطتهم الأساسية وأوصى بالبحث عن مكتبات بديلة.
العثور على مكتبة جافا مناسبة
السؤال الذي يطرح نفسه هو: توفر مكتبات Java إمكانات طلب POST متعددة الأجزاء/بيانات النموذج. إحدى هذه المكتبات هي HttpClient 4.x، والتي توفر حلاً شاملاً لتقديم هذه الطلبات.
كود HttpClient 4.3 المحدث
مع إصدارات HttpClient 4.3 وما فوق، واجهة برمجة التطبيقات (API) تم تحديثه وتم إهمال بعض الفئات. يوضح مقتطف التعليمات البرمجية التالي الطريقة التي تمت مراجعتها لإنشاء منشورات ملفات متعددة الأجزاء:CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost uploadFile = new HttpPost("...."); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("field1"، "yes"، ContentType.TEXT_PLAIN); // يؤدي هذا إلى إرفاق الملف بالمشاركة: File f = new File("[/path/to/upload]"); builder.addBinaryBody( "ملف"، FileInputStream الجديد (f)، ContentType.APPLICATION_OCTET_STREAM، f.getName() ); HttpEntity multipart = builder.build(); uploadFile.setEntity(multipart); استجابة CloseableHttpResponse = httpClient.execute(uploadFile); HttpEntity ResponseEntity = Response.getEntity();CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost uploadFile = new HttpPost("..."); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN); // This attaches the file to the POST: File f = new File("[/path/to/upload]"); builder.addBinaryBody( "file", new FileInputStream(f), ContentType.APPLICATION_OCTET_STREAM, f.getName() ); HttpEntity multipart = builder.build(); uploadFile.setEntity(multipart); CloseableHttpResponse response = httpClient.execute(uploadFile); HttpEntity responseEntity = response.getEntity();رمز HttpClient 4.0 المهمل (كمرجع)
HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); FileBody bin = new FileBody(new File(fileName)); StringBody comment = new StringBody("اسم الملف:" fileName); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("bin", bin); reqEntity.addPart("comment"، comment); httppost.setEntity(reqEntity); استجابة HttpResponse = httpclient.execute(httppost); HttpEntity resEntity = Response.getEntity();
HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); FileBody bin = new FileBody(new File(fileName)); StringBody comment = new StringBody("Filename: " fileName); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("bin", bin); reqEntity.addPart("comment", comment); httppost.setEntity(reqEntity); HttpResponse response = httpclient.execute(httppost); HttpEntity resEntity = response.getEntity();
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3