我正在尝试使用Python中的请求发送多部分/相关消息.该脚本看起来很简单,只是请求似乎只允许发送多部分/表单数据消息,尽管他们的文档没有明确说明这种或那种方式.
我的用例是发送带有附件的肥皂.我可以提供一个字典,其中包含两个文件,其内容是测试soap消息,以及我正在尝试发送的测试文档.第一个包含带有所有指令的soap消息,第二个是实际文档.
但是,如果我没有指定标头值,则在使用files选项时,请求似乎只使用multipart/form-data.但是,如果我在尝试指定不同的多部分类型时指定标题,则请求似乎不会添加到mime边界信息中.
url = 'http://10.10.10.90:8020/foo'
headers = {'content-type': 'multipart/related'}
files = {'submission': open('submission_set.xml', 'rb'), 'document': open('document.txt', 'rb')}
response = requests.post(url, data=data, headers=headers)
print response.text
Run Code Online (Sandbox Code Playgroud)
有没有办法使用请求完成此操作?还是我应该看到另一种工具?
我有一个接口,将由几个不同的类实现,每个类使用不同的类型和返回类型.返回类型可以从方法泛型类型中推断出来,但是我在实现它时遇到了麻烦.
界面目前看起来像这样:
public interface TransformUtilsBase<T> {
Class<?> transformToNhin(T request, BrokerContext brokerContext);
}
Run Code Online (Sandbox Code Playgroud)
我希望Impl类看起来像:
public class TransformUtilsXCPD implements TransformUtilsBase<foo> {
bar transformToNhin(foo request, BrokerContext brokerContext) {
code here
}
Run Code Online (Sandbox Code Playgroud)
在impl我知道返回类型应该是什么.在接口级别没有办法告诉.
我可以放弃一个接口,只是使用相同的方法名称制作几个类,但我想将它形式化,因为它们都被用于相同的目的.只有类型不同.
或者我可以只使用一大类静态方法,因为它们是util操作,但是管理具有相同名称的所有方法的类以及所有必需的辅助方法(同样具有相同名称)变得笨重.
实现接口似乎是形式化功能的最佳选择,即使我无法执行静态方法.我只是无法弄清楚如何处理返回类型.
编辑:扩展界面以显示完整示例以防止进一步混淆.接口
public interface TransformUtilsBase<T, U> {
Class<?> transformToNhin(T request, BrokerContext brokerContext);
Class<?> transformToXca(U request, BrokerContext brokerContext);
}
Run Code Online (Sandbox Code Playgroud)
IMPL
public class TransformUtilsXCPD implements TransformUtilsBase<Foo, Bar> {
Baz transformToNhin(Foo request, BrokerContext brokerContext) { code here }
Biz transformToXca(Bar request, BrokerContext brokerContext) { code here }
}
Run Code Online (Sandbox Code Playgroud) kotlin编译器似乎只是试图编译src/main/java中的.kt文件,而忽略了src/main/kotlin.但是,所有内容似乎都在IntelliJ IDE中正确链接.没有错误.
以下是我对kotlin的插件配置:
<plugins>
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<goals> <goal>compile</goal> </goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/main/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<goals> <goal>test-compile</goal> </goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/test/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行mvn clean install时,kotlin编译器似乎没有运行.所以我尝试直接从插件运行kotlin编译器.
[INFO] --- kotlin-maven-plugin:1.1.2:compile (default-cli) @ eagle-client-core ---
[INFO] Kotlin Compiler version 1.1.2
[INFO] Compiling Kotlin sources from [C:\Users\me\workspace\Project\Clients\project-client\project-client-core\src\main\java]
Run Code Online (Sandbox Code Playgroud)
如您所见,src/main/java正在扫描,但不是src/main/kotlin.
我的配置没有看到任何明显错误.任何帮助都是适当的.