2

很抱歉发布此消息,因为这对专家来说可能是一个简单的问题,但对我作为初学者来说,这是一个需要解决的重要问题。我创建了一个WSO2 DSS service其中有一个MYSQL名为的表数据源users(userid(auto_increment),first_name,last_name,password).

我为 GET、POST、PUT、DELETE 和资源创建了特定的查询来适应这些请求。当我开始使用 cURL GET 和 DELETE 测试服务时,它正在工作,我能够检索和删除数据。但是,当我尝试插入(POST)和更新(PUT)数据时,我遇到了多个错误,如下所示:

curl: (6) Could not resolve host: first_name curl: (6) Could not
 resolve host: last_name curl: (6) Could not resolve host: password
 HTTP/1.1 500 Internal Server Error Access-Control-Allow-Headers:
 authorization,Access-Control-Allow-Origin,Content-Type Vary:
 Accept-Encoding Content-Type: text/html;charset=utf-8 Date: Fri, 08
 Aug 2014 05:05:43 GMT Server: WSO2-PassThrough-HTTP Transfer-Encoding:
 chunked

<html><head><title>Apache Tomcat/7.0.34 - Error
 report</title><style><!--H1
 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
 H2
 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;}
 H3
 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}
 BODY
 {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;}
 B
 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P
 {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A
 {color : black;}A.name {color : black;}HR {color :
 #525D76;}--></style> </head><body><h1>HTTP Status 500 - String index out of range: 1</h1><HR size="1" noshade="noshade"><p><b>type</b>
 Exception report</p><p><b>message</b> <u>String index out of range:
 -1</u></p><p><b>description</b> <u>The server encountered an internal error that prevented t from fulfilling this
 request.</u></p><p><b>exception</b>
 <pre>java.lang.StringIndexOutOfBoundsException: String index out of
 range: -1
         java.lang.String.substring(String.java:1911)
         rg.apache.axis2.builder.XFormURLEncodedBuilder.extractParametersFromRequest(XFormURLEncodedBilder.java:174)
         rg.apache.axis2.builder.XFormURLEncodedBuilder.processDocument(XFormURLEncodedBuilder.java:12)
         rg.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:188)
         org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:146)
         org.apache.axis2.transport.http.util.RESTUtil.processXMLRequest(RESTUtil.java:65)
         org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processXMLRequest(AxisServlet.java:826)
         org.apache.axis2.transport.http.AxisServlet.doPut(AxisServlet.java:317)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:758)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
         org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
         org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
         org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
         org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
         org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)

以下是我使用的 cURL 命令:

POST - curl -i -H "Authorization: Bearer f56ce778dee04274eba0eab3e9d7b324" -H "Accept: application/json" -X POST -d {"first_name":"chris","last_name":"paul","password":"cp3"} http://ip:port/SampleDSS/user/

PUT - curl -i -H "Authorization: Bearer f56ce778dee04274eba0eab3e9d7b324" -H "Accept: application/json" -X PUT -d {"userid":11,"first_name":"chris","last_name":"paul","password":"cp3"} http://ip:port/SampleDSS/user/

您能否指出我正在使用的cURL命令或格式数据是否存在问题?JSON

任何实质性的帮助都将受到欢迎。

非常感谢你!

4

1 回答 1

0

引用您的 JSON 数据,如下所示:

curl -i \
    -H "Authorization: Bearer f56ce778dee04274eba0eab3e9d7b324" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -X PUT \
    -d '{"_postuser":{"userid":11,"first_name":"chris","last_name":"paul","password":"cp3"}}' \
    http://ip:port/SampleDSS/user/

您的请求似乎正在作为 XML 请求进行处理。您可能想要添加一个Content-Type标头来指示您正在发送 JSON 内容。

于 2014-08-08T05:59:47.833 回答