2015-08-19 3 views
0

Я работаю над некоторым запросом HttpPost для отправки на сервер. Но я застрял с «границей», о которой я понятия не имею. Это то, что пример в документации говорит:Boundary In HttpPost

Request: 
POST /render?method=addJob&version=1000&target=stream HTTP/1.1 
Content-Type: multipart/form-data; boundary=boundary 
--boundary 
Content-Length: ... 
Chapter 2 Description of the HTTP interface 
18 OpenText Rendition Server RS100000-PGD-EN 
X-sourceType: options 
X-optionsAs: properties 
pageSize=A4 
serverSideProfile=Confidential 
--boundary 
Content-Length: ... 
X-sourceType: stream 
Content-Disposition: form-data; filename="sourceFile1.xls" 
fadjföajdfhaor ofua rela üjadfhkhdaf adfaj f (binary content) 
--boundary 
Content-Length: ... 
X-sourceType: stream 
Content-Disposition: form-data; filename="sourceFile2.doc" 
X-urlForm: http://server/path/file.jpg 
X-formParams: overlayLayer=Background&overlayAlignment=TopLeft 
fadjföajdfhaor ofua rela üjadfhkhdaf adfaj f (binary content) 
--boundary 
Content-Length: ... 
X-sourceType: url 
X-url: 
http://server:8080/archive?get&contRep=WM_101&docId=ICS_1&pVersion=0045 
X-contentType: image/tiff 
--boundary-- 

Я могу понять, что часть

Content-Type: multipart/form-data; boundary=boundary 

является заголовок. Но я понятия не имею о граничной вещи, упомянутой в нем. Можете ли вы привести рабочий пример, чтобы объяснить это? Что это на самом деле? И вы отправите это на сервер?

Это то, что я делаю до сих пор.

package method; 

import java.io.IOException; 

import javax.swing.text.html.parser.Entity; 

import org.apache.http.Header; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.ByteArrayEntity; 
import org.apache.http.impl.client.DefaultHttpClient; 

import paramStorage.Data; 

public class AddJob { 

    private HttpClient client = null; 
    private String URL = null; 
    private HttpPost post = null; 
    private HttpResponse response = null; 
    private final String boundary = "--boundary\r\n" + 
            "X-sourceType: stream\r\n"+ 
            "pageSize=A4"+ 
            "serverSideProfile=Confidential"+ 
            "--boundary--\r\n"; 

    public void getSessionId() { 
     client = new DefaultHttpClient(); 

     URL = "http://" + Data.server + ":" + Data.port + "/render?method=addJob&version=1000&target=" + Data.target 
       + "&targetContentType=" + Data.targetContentType; 
     System.out.println(URL); 
     post = new HttpPost(URL); 
     post.addHeader("Content-Type","multipart/form-data; boundary=boundary"); 
     String body = "--boundary\r\n"+ 
       "X-sourceType: stream\r\n"+ 
       "emailFrom: [email protected]\r\n"+ 
       "emailTo: [email protected]\r\n"+ 
       "emailSubject: Java Mail\r\n"+ 
       "--boundary--\r\n"; 

     try { 
      HttpEntity entity = new ByteArrayEntity(body.getBytes("UTF-8")); 
      post.setEntity(entity); 
      Header[] headerst = post.getAllHeaders(); 
      for (Header header : headerst) { 
       System.out.println(header); 
      } 

      response = client.execute(post); 
      if (response != null) { 

       System.out.println("Status :: " + response.getStatusLine()); 
       Header[] headers = response.getAllHeaders(); 
       for (Header header : headers) { 
        System.out.println(header); 
       } 
       Data.jsessionid = headers[2].getValue(); 
       System.out.println(Data.jsessionid); 

      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

} 

Надеюсь, это даст вам представление о том, что я хочу делать.

ответ

0

Граница заключается в разделении частей сообщения. Я использовал его для возврата некоторого XML в дополнение к изображению или другим двоичным данным. Я занимался аналитикой зрения и возвращал послужной список (в xml или json) в дополнение к изображению автомобиля. Я также использовал его для передачи калибровки камеры. Различные части калибровочной структуры были отправлены в одном регионе как xml/json/etc, а в другом регионе была бинарная таблица, отображающая каждый пиксель в его реальном местоположении (lat, long, высота.

Без границы, его предположил, что весь ответ однородный (или пользователь проанализирован) .Вы указали пример. В зависимости от настроенного сервера/клиентов его можно установить на сервер с POST или вернуть с сервера с помощью GET.

Смежные вопросы