故障诊断与支持

故障诊断技术和自助信息有助于您快速识别和解决问题。您可以在这里找到自己可能遇到的 HTTP 连接器问题的可能解决方案。

查询参数的不一致行为

问题:传递到 HTTP 接收方的查询参数的行为与输入不同。对于“HTTP 放置”、“HTTP 获取”、“HTTP 调用”、“HTTP 头”和“HTTP 删除”出站活动,会发生这种不一致情况。对于这些活动,可以在以下两个位置中设置包含查询参数的 URL:
  • 核对表 > 配置面板 > URL(主机名后的路径)
  • 核对表 > 映射输入面板 > 至活动部分 >httpheaders > uri

但是,上述步骤中设置的查询参数可以在映射输入面板 >“至活动”部分 > httpheaders > queryParameters 中被替换或覆盖。传递到 HTTP 接收方的查询参数的行为与输入不同。

解决方案:设置值时,请考虑以下几点:
  • 如果映射了 URL 值并且参数值为空,那么 URL 将原样传递到 HTTP 接收方。
  • 如果还分配了映射中的 URL 值以及参数值,那么 HTTP 接收方将获取这些值。包含参数值的 URL 将追加到 URL 末尾。
  • 如果未映射 URL 值,将使用输入映射中的参数值动态构建 URL。

示例

配置面板 URI: /xyz/test?query2=c&query3=c&query5=c&query6=c

映射输入 URI: /xyz/test?query4=u&query3=u

映射输入查询参数:query2=m and query3=m

结束 URL: /xyz/test?query4=u&query3=m&query2=m&query5=&query6=

HTTP 连接器使用 ISO-8859-1 作为缺省字符编码值。

HTTP 连接器现在使用 ISO-8859-1 作为缺省字符编码,代替 UTF-8。

您可以使用以下任何一种方法来更改此字符编码值:

  • 方法 1:要解决问题,请执行以下步骤:
    1. 转至“HTTP 发送响应”活动
    2. 添加响应头“Content-Type”
    3. 在“映射输入”、“至活动”主体中,右键单击主体元素,然后单击“显示可选参数”
    4. 展开(可选)httpheaders,并将以下缺省值分配给“Content-Type”元素:
      text/plain;charset=UTF-8
  • 方法 2:引入新的 JVM 级别配置属性。您可以将此更改为必需值。如果在 HTTP 活动中设置任何值,那么将具备最高优先级。会将下一个优先级指定给 JVM 级别属性(如果可用)。如果未在任何位置进行设置,那么会将缺省值“ISO-8859-1”用于内容编码。
    • Studio
      Property name: "ContentEncoding" 
      Default value: "ISO-8859-1"

      一旦启动 Studio,将在 JDK 的 bin 目录中运行 jConsole。在新建连接屏幕中的“本地进程”下,选择与 Studio 对应的进程,然后单击连接。在 MBeans 选项卡下,浏览至“HttpModule”>“HTTP 回送”>“属性”>“ContentEncoding”。将缺省值更改为必需值。

    • 设备
      Property name: HTTP_CHARACTER_ENCODING 
      Default value: ""

      在设备上设置此属性需要系统 shell 访问权以启用/禁用 jmxport。在系统 shell 中,发出以下命令以检查是否针对属性设置任何值:

      ihconfutil lookup /var/sysconf sysconf.db HTTP_CHARACTER_ENCODING

      用户将获取如下输出:

      ContentEncodingv: []

      现在,尝试将值 true 设置为此属性。

      ihconfutil add /var/sysconf sysconf.db HTTP_CHARACTER_ENCODING <new value>

      现在,使用以下命令验证值设置:

      ihconfutil lookup /var/sysconf sysconf.db HTTP_CHARACTER_ENCODING

      这样将导致

      ContentEncodingv: [<new value>] 
      设备中的层次结构为:
      1. Jconsole 属性
      2. Config 属性
      3. 缺省值
      如果想要在运行时更改值而不重新启动应用程序,可以将 jconsole 用于设备,但是如果想要设置值并使其永久存在,那么必须在 config 属性中进行设置。如果未针对两个属性设置任何值,那么将使用缺省值 (ISO-8859-1)。