API Connect 5 - 尝试读取urlopen响应数据时出错

时间:2017-07-14 17:22:32

标签: api apiconnect

我尝试使用IBM API Connect 5从SOAP服务创建REST API。我已按照本指南(https://www.ibm.com/support/knowledgecenter/en/SSFS6T/com.ibm.apic.apionprem.doc/tutorial_apionprem_expose_SOAP.html)中描述的所有步骤进行操作。 因此,在从调色板拖动Web服务块后,确保端点的正确性并发布API,我试图从浏览器调用API。不幸的是,API返回以下消息:

<errorResponse>
<httpCode>500</httpCode>
<httpMessage>Internal Server Error</httpMessage>
<moreInformation>Error attempting to read the urlopen response 
data</moreInformation>
</errorResponse> 

为了测试目的,我已经记录了请求,并且我已经在SOAPUI上尝试了请求。该服务正确返回响应。

有什么问题?

谢谢, 斯特凡诺

3 个答案:

答案 0 :(得分:1)

就我而言,问题出现在后端字符集中(Content-Type:text / xml; charset = iso-8859-1)。

例如,后端以德语(或法语)返回text / xml。 Api Connect无法处理角色ü。它需要Content-Type:text / xml; charset = UTF-8

答案 1 :(得分:0)

我有一个类似的问题,就我而言是接受。如果您拥有Invoke,并且内容类型或接受与请求之一或您得到的响应不匹配,那么APIC就会发疯。

答案 2 :(得分:0)

请检查发送 (contentType) 和接收 (accept) 的格式是否与您的 API 预期的格式相同。就我而言,发生错误是因为 API 返回一个字符串,而我的默认代码配置为接收 JSON 正文。

//define a JSON-PLAIN TEXT protocol
private HttpEntity<String> httpEntityWithBody(Object objToParse){
    HttpHeaders headers = new HttpHeaders();
    headers.set("Authorization", "Bearer " + "xxx token xxx");
    headers.set("Accept", MediaType.TEXT_PLAIN_VALUE);
    headers.setContentType(MediaType.APPLICATION_JSON);
   
    Gson gson = new GsonBuilder().create();
    String json = gson.toJson(objToParse);

    HttpEntity<String> httpEntity = new HttpEntity<String>(json, headers);
    return httpEntity;       
}

//calling the API to APIC...

ParameterizedTypeReference<String> responseType = new 
ParameterizedTypeReference<String>(){};

ResponseEntity<String> result = 
rest.exchange(builder.buildAndExpand(urlParams).toUri(), HttpMethod.PUT, httpEntityWithBody(myDTO), responseType);

String statusCode = result.getStatusCodeValue();
String message = result.getBody();