1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| procedure TForm1.Button2Click(Sender: TObject);
var
Request: TScHttpWebRequest;
Response: TScHttpWebResponse;
ResponseStr, JSONStr, BoundryStr: string;
Buf: TBytes;
ms: TStream;
fs: TFileStream;
begin
ms := TMemoryStream.Create;
Request := TScHttpWebRequest.Create('https://some.request.uri'); //<-void URI for reference
BoundryStr := '---------------------------42708293323423383188946176979';//random charaster sequence, NEVER appeared in content data
try
//encoding XML
Buf := Encoding.Default.GetBytes('--' + BoundryStr + #13#10);
ms.Write(Buf, 0, Length(Buf));
//Content-Type: application/octet-stream
//Buf := TEncoding.Default.GetBytes('Content-Type: application/octet-stream'#13#10#13#10);
//ms.Write(Buf, 0, Length(Buf));
//Content-Transfer-Encoding: binary
//Buf := TEncoding.Default.GetBytes('Content-Transfer-Encoding: binary'#13#10#13#10);
//ms.Write(Buf, 0, Length(Buf)); [/COLOR]
Buf := Encoding.Default.GetBytes('Content-Disposition: form-data; name="mystream"; filename="/D:/REST/file123456.xml"'#13#10);
ms.Write(Buf, 0, Length(Buf));
Buf := Encoding.Default.GetBytes('Content-Type: text/xml'#13#10#13#10);
ms.Write(Buf, 0, Length(Buf));
fs := TFileStream.Create('D:\REST\file123456.xml', fmOpenRead or fmShareDenyWrite);
ms.CopyFrom(fs);
fs.Free;
// encoding JSON
Buf := Encoding.Default.GetBytes(#13#10'--' + BoundryStr + #13#10);
ms.Write(Buf, 0, Length(Buf));
Buf := Encoding.Default.GetBytes('Content-Disposition: form-data; name="myinfo"'#13#10);
ms.Write(Buf, 0, Length(Buf));
Buf := Encoding.Default.GetBytes('Content-Type: application/json'#13#10#13#10);
ms.Write(Buf, 0, Length(Buf));
Buf := Encoding.Default.GetBytes('{'+#13#10+'"printLanguage" : "fr"'+#13#10+'}');
ms.Write(Buf, 0, Length(Buf));
//end of multipart content
Buf := Encoding.Default.GetBytes(#13#10'--' + BoundryStr + '--'#13#10);
ms.Write(Buf, 0, Length(Buf));
ms.Position := 0;
//setup request
Request.RequestStream := ms;
Request.Headers.Add('Authorization', 'Krpaf123456789abD');
Request.Headers.Add('IDCLI', '123456789');
Request.ContentType := 'multipart/form-data; boundary=' + BoundryStr;
try
//Obtaining response
Response := Request.GetResponse;
ResponseStr := Response.readAsString;
finally
Response.Free;
end;
finally
ms.free;
Request.Free;
end;
end; |
Partager