【问题标题】:curl errors: could not resolve host, java.lang.StringIndexOutOfBoundsException: String index out of range: -1curl 错误:无法解析主机,java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1
【发布时间】:2014-08-08 16:21:57
【问题描述】:

很抱歉发布此信息,因为这对专家来说可能是一个简单的问题,但对我作为初学者来说,这是一个需要解决的重要问题。我创建了一个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 格式数据是否存在问题?

我们欢迎任何实质性的帮助。

非常感谢!

【问题讨论】:

    标签: java curl wso2 wso2dss dss


    【解决方案1】:

    如下引用您的 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 内容。

    【讨论】:

    • 嗨 Robby,感谢您提供的格式,但是当我尝试对其进行测试时,它仍然给我一个 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1。发布的数据格式有问题吗?
    • @Drew 现在正在调查。 curl 错误至少消失了吗?
    • 是的,罗比,他们走了。
    • @Drew 我已经多次更新我的答案,但似乎有很多问题。
    • 是的,数据类型应该是JSON,不好意思忘了说。我尝试使用您提供的格式,这次是另一个错误 javax.xml.stream.XMLStreamException: Unexpected end of json stream。 JSON格式的输入数据似乎有问题。抱歉,我是 JSON 和 WSO2 产品的新手,但这是我的上级要求我做的。
    猜你喜欢
    • 2019-05-22
    • 2014-06-19
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2016-02-25
    • 2018-11-14
    相关资源
    最近更新 更多