2

専門家にとっては簡単な問題かもしれませんが、初心者の私にとっては解決すべき重要な問題であるため、これを投稿して申し訳ありません。という名前のテーブルデータソースWSO2 DSS serviceがある場所を作成しましたMYSQLusers(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-TypeJSON コンテンツを送信していることを示すヘッダーを追加することをお勧めします。

于 2014-08-08T05:59:47.833 に答える