我正在尝试向api做一个非常简单的多部分表单发布。我看不到在Apache Nifi中执行此操作的任何方法,因为它似乎仅具有一个表单数据输入。在这里和Nifi论坛上似乎有很多关于此的现有问题,但是它们都没有任何答案。
我正在尝试使用invokehttp。在将其放入invokehttp之前,是否有一种方法可以构建多种表单数据?
您可以使用ExecuteGroovyScript带有以下代码的处理器来构建多部分/表单数据:
@Grab(group='org.apache.httpcomponents', module='httpmime', version='4.5.9')
import org.apache.http.entity.mime.MultipartEntityBuilder
import org.apache.http.entity.ContentType
def ff = session.get()
if(!ff)return
def multipart
ff.write{streamIn, streamOut->
multipart = MultipartEntityBuilder.create()
//specify multipart entries here
.addTextBody( "username", ff.filename ) //get from flowfile attribute "filename"
.addTextBody( "secret", new File("./README").getText("UTF-8") ) //add text body from file
.addBinaryBody( "avatar", streamIn, ContentType.DEFAULT_BINARY, ff.filename ) //add flowfile content as binary body
.build()
multipart.writeTo(streamOut)
}
//set the `mime.type` attribute to be used as `Content-Type` in InvokeHTTP
ff."mime.type" = multipart.getContentType().getValue()
REL_SUCCESS << ff
Run Code Online (Sandbox Code Playgroud)
检查add*添加多部分参数的其他方法:org.apache.http.entity.mime.MultipartEntityBuilder
为了检查这段代码,我InvokeHTTP刚刚使用了处理器ExecuteGroovyScript,只更改了以下参数:
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |