首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi Devart SecureBridge POST请求

Delphi Devart SecureBridge POST请求
EN

Stack Overflow用户
提问于 2020-07-08 18:49:52
回答 2查看 502关注 0票数 2

我使用的是DevArt的SecureBridge产品的试用版。我正在尝试处理POST,但不知何故无法打印请求数据。

XML:

代码语言:javascript
复制
<test>
<a>test1</a>
<b>test2</b>
</test>

Delphi:

代码语言:javascript
复制
  ScHttpWebRequest1.Method := rmPOST;
  ScHttpWebRequest1.ContentType := 'text/xml';
  ScHttpWebRequest1.RequestUri := 'https://test.com/api';
  ScHttpWebRequest1.KeepAlive := True;
  ScHttpWebRequest1.ContentLength := Length(XML);
  ScHttpWebRequest1.WriteBuffer(pAnsiChar(XML), 0, Length(XML)); ///I think I'm making a mistake here.
  ShowMessage(ScHttpWebRequest1.GetResponse.ReadAsString);

我已经看过文档了,但是有一个叫做RequestStream的特性。此功能在我下载的版本中不可用。我认为使用WriteBuffer代替或者不同。我所要做的就是在相关网站上请求一个包含XML内容的帖子。我该怎么做呢?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-08 21:28:07

下面是我用过的一段代码:

代码语言:javascript
复制
var
 Response: TScHttpWebResponse;
 ResponseStr: string;
 buf: TBytes;
begin
  ScHttpWebRequest1.Method := rmPOST;
  ScHttpWebRequest1.ContentType := 'text/xml';
  ScHttpWebRequest1.RequestUri := 'https://test.com/api';
  ScHttpWebRequest1.KeepAlive := True;

   buf := TEncoding.UTF8.GetBytes(xml);
   ScHttpWebRequest1.ContentLength := Length(buf);
   ScHttpWebRequest1.WriteBuffer(buf);
   Response:=ScHttpWebRequest1.GetResponse;
   ResponseStr:=Response.ReadAsString;
end;
票数 4
EN

Stack Overflow用户

发布于 2021-01-24 03:41:48

基于Devart forums信息,您可以post/put流或字符串参数,如下所示:

代码语言:javascript
复制
var
  Request: TScHttpWebRequest;
  Response: TScHttpWebResponse;
  ResponseStr: string;
  Stream: TFileStream;
begin
  Request := TScHttpWebRequest.Create(URL);
  Stream := TFileStream.Create(FileName, fmOpenRead);
  try
    Request.Method := rmPut;

    Request.ContentType := 'application/pdf';
    Request.TransferEncoding := 'binary';
    Request.Headers.Add('Content-Disposition', 'form-data; name="FormFile"; filename="Document1.pdf"');

    Request.ContentLength := Stream.Size;
    Request.SendChunked := True;
    Request.RequestStream := Stream;

    Response := Request.GetResponse;
    ResponseStr := Response.ReadAsString;
    Response.Free;
  finally
    Stream.Free;
    Request.Free;
  end;
end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62793110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档