java - 在 soapUI 中上传文件

标签 java http attachment soapui

我正在使用 soapUI 将文件上传到我们的上传服务。使用该工具的 GUI 调用时,文件将正确上传。但是,我们正在从我们的框架中调用命令行版本。

soapUI 命令行调用似乎无法在 http 请求中正确构造 Content-Disposition,当它尝试添加“文件名”参数时会抛出异常,因为这是意外的。这是堆栈跟踪:

14:33:51,358 ERROR [SoapUI] An error occured [Expected ';', got "filename"], see error log for details
javax.mail.internet.ParseException: Expected ';', got "filename"
    at javax.mail.internet.ParameterList.<init>(ParameterList.java:280)
    at javax.mail.internet.ContentDisposition.<init>(ContentDisposition.java:96)
    at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1338)
    at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1008)
    at javax.mail.internet.PreencodedMimeBodyPart.updateHeaders(PreencodedMimeBodyPart.java:117)
    at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:414)
    at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1285)
    at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2071)
    at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2039)
    at com.eviware.soapui.impl.wsdl.submit.filters.HttpRequestFilter.filterHttpRequest(HttpRequestFilter.java:240)
    at com.eviware.soapui.impl.wsdl.submit.filters.AbstractRequestFilter.filterAbstractHttpRequest(AbstractRequestFilter.java:41)
    at com.eviware.soapui.impl.wsdl.submit.filters.AbstractRequestFilter.filterRequest(AbstractRequestFilter.java:31)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:130)
    at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:122)
    at com.eviware.soapui.impl.wsdl.WsdlSubmit.submitRequest(WsdlSubmit.java:75)
    at com.eviware.soapui.impl.support.http.HttpRequest.submit(HttpRequest.java:258)
    at com.eviware.soapui.impl.wsdl.teststeps.HttpTestRequestStep.run(HttpTestRequestStep.java:253)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runTestStep(WsdlTestCaseRunner.java:193)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.internalRun(WsdlTestCaseRunner.java:124)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.internalRun(WsdlTestCaseRunner.java:39)
    at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.run(AbstractTestRunner.java:137)
    at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.start(AbstractTestRunner.java:80)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase.run(WsdlTestCase.java:578)
    at awris.product.testengine.commands.service.SoapUICommand$BetterSoapUITestCaseRunner.runTestCase(SoapUICommand.java:303)
    at com.eviware.soapui.tools.SoapUITestCaseRunner.runRunner(SoapUITestCaseRunner.java:318)
    at com.eviware.soapui.tools.AbstractSoapUIRunner.run(AbstractSoapUIRunner.java:133)
    at awris.product.testengine.commands.service.SoapUICommand.execute(SoapUICommand.java:76)
    at awris.product.testengine.TestRunner.executeCommands(TestRunner.java:123)
    at awris.product.testengine.TestRunner.doTest(TestRunner.java:87)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:609)
    at org.testng.internal.MethodHelper$1.runTestMethod(MethodHelper.java:727)
......

当测试运行时,文件无法上传,因为标题结构中的附件不存在。为什么这是从命令行调用而不是在 GUI 中发生的,我该如何解决?

最佳答案

好的,我自己找到了解决方案。我使用的 soapUI GUI 的版本是 3.6.1,命令行调用的版本是 3.0.1,其中有一个错误可以防止为文件上传请求错误地构造 Content-Disposition。即它不在 Content-Disposition 中包含文件名参数。

将版本更新到 3.6.1 为我解决了这个问题。

关于java - 在 soapUI 中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5321278/

相关文章:

apache - 配置 Apache 将 "GET/user/foo"路由到/user/GET.php 并将 "PUT/user/foo"路由到/user/PUT.php

android - 如何在 Android 4.0+ 中发送带附件的彩信

java - java中的这个方法有什么问题?我想实现递归

java - 解析JAVA中包含空格的多行字符串

java - 事务隔离和并发

http - 嵌套的 ServeMux 总是返回 "301 Moved Permanently"

java - retrofit 时禁用 SPDY 连接

rest - 当 PUT 是空操作时,HTTP 服务器应该返回 200 吗?

Java Mail API 发送带有另一封邮件的邮件

Python 请求 POST 返回不完整的内容