如何解决如何使用 XProc 的 p:http-request
我想使用带有 XProc 的 multipart/form-data
函数的 p:http-request
POST 请求发送文档;需要多部分,因为也需要发送一些表单字段。
我只是无法获取文件的内容(在我的例子中是 XSD 文件)来请求。
知道如何实现这一点吗?
在 OxygenXML v23.1 中使用 xmlcalabash
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
<p:input port="source" primary="true">
<p:document href="my.xsd"/>
</p:input>
<p:output port="result" primary="true"/>
<p:http-request>
<p:input port="source">
<p:inline>
<c:request href="https://myserver" method="post">
<c:multipart content-type="multipart/form-data" boundary="----12345678">
<c:body content-type="application/xml" disposition='form-data; name="xsd"; filename="myfile.xsd"'>
XXXX what do do here XXXX
</c:body>
<c:body content-type="plain/text" disposition='form-data; name="arg1"'>4</c:body>
<c:body content-type="plain/text" disposition='form-data; name="arg2"'>on</c:body>
</c:multipart>
</c:request>
</p:inline>
</p:input>
</p:http-request>
</p:declare-step>
解决方法
您可能希望使用 p:template
步骤将 XML 内容插入到 HTTP 请求正文中。
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
<p:output port="result" primary="true"/>
<p:template>
<p:input port="parameters"><p:empty/></p:input>
<p:input port="source">
<p:document href="my.xsd"/>
</p:input>
<p:input port="template">
<p:inline>
<c:request href="https://myserver" method="post">
<c:multipart content-type="multipart/form-data" boundary="----12345678">
<c:body content-type="application/xml" disposition='form-data; name="xsd"; filename="myfile.xsd"'>
{/*}<!-- reference to the root element of the 'source' doc -->
</c:body>
<c:body content-type="plain/text" disposition='form-data; name="arg1"'>4</c:body>
<c:body content-type="plain/text" disposition='form-data; name="arg2"'>on</c:body>
</c:multipart>
</c:request>
</p:inline>
</p:input>
</p:template>
<p:http-request/>
</p:declare-step>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。