我在Camel中有一个长时间运行的进程,它是由HTTP请求触发的。我想将状态更新写入Outputstream,但在客户端没有得到响应。
我尝试使用以下方法:
骆驼-路线:
<from uri="jetty:http://localhost:12345/myservice"/>
<process ref="test" />
处理器测试:
public void process(Exchange arg0) throws Exception {
System.out.println("TestProcessor");
HttpServletResponse response = (HttpServletResponse) arg0.getIn().getHeader(Exchange.HTTP_SERVLET_RESPONSE);
OutputStreamWriter wr = new OutputStreamWriter(response.getOutputStream());
BufferedWriter w = new BufferedWriter(wr);
for(int x = 0; x < 10; x++){
w.write("Zeile: " + x + "\n");
w.newLine();
}
// arg0.getIn().setBody("This might also be a response");
}
以及呼叫代码:
final HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput( true );
conn.setInstanceFollowRedirects( false );
conn.setRequestMethod( "GET" );
conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty( "charset", "utf-8");
conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength ));
conn.setUseCaches( false );
new Thread(new Runnable(){
@Override
public void run() {
try {
if(!urlParameters.isEmpty()){
try( DataOutputStream wr = new DataOutputStream( conn.getOutputStream())) {
wr.write( postData );
wr.close();
}
}
InputStream s = conn.getInputStream();
System.out.println("got InputStream");
InputStreamReader is = new InputStreamReader(s);
BufferedReader br = new BufferedReader(is);
String line;
while((line = br.readLine()) != null){
System.out.println("ReadLine: " + line);
}
conn.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
但我只有在处理器中设置主体(注释行)时才得到响应。有没有办法保持camel中的连接并继续向其写入?
您应该使用out
消息使用HTTP组件发送答案:
arg0.getOut().setBody("This might also be a response");
HTTP组件使用HttpBinding将HttpServletRequest转换为Exchange,反之,从Exchange填充HttpServletResponse。您可以在此处查看默认实现,也可以提供自己的实现。
问题内容: 我一直在尝试将数组写入文件。我知道如何将整数或字符串写入文件,但是要带一个数组会使我感到困惑。我现在正在使用这个: 问题答案: 就像其他人说的那样,您可以循环遍历数组并逐个打印出元素。为了使输出显示为数字而不是您看到的“字母和符号”,您需要将每个元素转换为字符串。因此,您的代码将如下所示: 如果您只想打印类似的数组,则可以使用此衬纸替换循环:
问题内容: 我有一个示例数组如下 我想将此数组写入文件,例如我得到的文件如下 问题答案: 如果它是一个巨大的数组,并且在写入之前需要太多内存才能将其序列化为字符串,则可以使用流:
当我们在本地准备好 MIP 组件仓库(mip2-extensions 或 mip2-extensions-platform),并且在组件仓库里创建了符合 MIP 组件规范的组件目录结构之后,接下来我们将来学习如何编写一个组件。 创建 MIP 组件目录 以开发官方组件为例(mip2-extensions),首先需要在 components 目录下创建组件文件夹,假设开发的组件名为 mip-examp
问题内容: 我想打开一个新的文本文件,然后将numpy数组保存到该文件。我写了这段代码: 我收到此错误: 有人知道怎么了吗? 另外,我在终端中找到了一个名为file_2的空文件,但是里面没有任何内容。 编辑:我正在使用Python3.4 问题答案: 看来您正在使用Python3。因此,请以二进制模式()而非文本模式()打开文件: 另外,关闭文件句柄,以确保将所有内容都写入磁盘。您可以使用-stat
我已经将一个图像文件读入了ByteArray中,但是我如何将它写回。我的意思是将ByteArray保存到文件系统中的图像文件中。首选PNG格式。 我从PNG文件到ByteArray的代码:
问题内容: 如何将一小段文字写入文件?我已经使用Google搜索了3-4多个小时,但无法找到具体方法。 有很多论据,我不知道该如何使用。 当您只想在文件中写一个名字和几个数字时,最容易使用的功能是什么? 编辑:添加了一段我的代码。 问题答案: