2

我正在使用 ColdFusion,但我认为这更像是一个 java 问题。我正在向 Web 服务发布 xml 帖子。当我尝试读取响应时,我从以下行收到带有 http 响应代码 406 的异常:

var inputStreamReader = CreateObject("java","java.io.InputStreamReader").init(variables.connection.getInputStream());

Web 服务文档对 406 说明如下:“如果请求已处理但包含无效或不足的信息以完成 API 方法,则将返回 406。将返回描述错误的消息。”

我的问题是,我如何检索或以其他方式查看消息内容包含的内容?

4

1 回答 1

3

我们需要查看更多代码以及异常。但是,基于您使用的事实getInputStream,我猜您使用的是HTTPURLConnection,而不是 cfhttp。如果是这样,您需要在处理响应之前检查返回的状态码。原因如下:

如果请求成功,则将响应写入输入流。否则,它将被写入错误流(这可能是您的错误“消息”结束的地方)。因此,您需要添加一些逻辑,根据返回的 HTTP 状态代码读取相应的流。

从您的评论中,我假设您已经知道如何读取InputStream并返回一个字符串。只需将该逻辑包装在名为 的自定义函数中streamToString,然后您就可以像这样重用它:

  // extract status code and message
  variables.result.code = variables.connection.getResponseCode();
  variables.result.message = variables.connection.getResponseMessage();

  // Simplified example, adjust as needed
  if (variables.result.code == variables.connection.HTTP_OK) {
      variables.result.text = streamToString(variables.connection.getInputStream());
  }
  else {
      variables.result.error = streamToString(variables.connection.getErrorStream());
  }

  // show results
  WriteDump(variables.result);
于 2013-08-09T20:01:33.957 回答