2014-12-02 76 views
0

我嘗試執行包含多個參數的POST請求。一個參數需要一個JSON文件。我嘗試了幾個選項,但我面對json的問題。需要json的參數是'swagger' .. 這是我嘗試的捲曲請求。[1]但看起來這是不被服務器接受的。我得到以下錯誤;如何使用CURL發佈特定參數的json

"null is not supported"}curl: (6) Could not resolve host: swaggerimpl.json 

如何發佈JSON使用捲曲的特定參數?

[1] 

curl -X POST -b cookies $SERVER/publisher/site/blocks/item-design/ajax/add.jag -d "action=implement&name=YoutubeFeeds&visibility=public&version=1.0.0&provider=admin&endpoint_type=http&implementation_methods=http&wsdl=&wadl=&endpointType=nonsecured&production_endpoints=http://gdata.youtube.com/feeds/api/standardfeeds&implementation_methods=endpoint" -H 'Content-Type: application/json' -d 'swagger=' @swaggerimpl.json 

編輯:

curl命令

curl -X POST -b cookies $SERVER/publisher/site/blocks/item-design/ajax/add.jag -d "action=implement&name=YoutubeFeeds&visibility=public&version=1.0.0&provider=admin&endpoint_type=http&implementation_methods=http&wsdl=&wadl=&endpointType=nonsecured&production_endpoints=http://gdata.youtube.com/feeds/api/standardfeeds&implementation_methods=endpoint" -d @swagger_impl.json -d @endpointconfig_impl.json; 

錯誤; 在java.lang.Thread.run(Thread.java:695) 引起:java.lang.ClassCastException:org.mozilla.javascript.NativeJavaArray不能在 被鑄造爲java.lang.String 在sun.reflect .NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

犯罪嫌疑人JSON文件

swagger={ 
    "apiVersion": "1.0.0", 
    "swaggerVersion": "1.2", 
    "authorizations": { 
     "oauth2": { 
      "scopes": [], 
      "type": "oauth2" 
     } 
    }, 
......... 
} 

演員代碼:

public static boolean jsFunction_updateAPIImplementation(Context cx, Scriptable thisObj, 
              Object[] args, Function funObj) throws Exception, ScriptException { 
     boolean success = false; 

     if (args==null||args.length == 0) { 
      handleException("Invalid number of input parameters."); 
     } 

     NativeObject apiData = (NativeObject) args[0]; //This cause issue 

回答

1

您在最後添加的參數不應包含空格。但是,如果你刪除這個空間,那麼'@ swagger.json'將被添加爲一個測試(而不是文件內容)。如果你想通過JSON作爲參數,那麼你可以添加到文件參數名稱,如: swagger = {..}

它看起來像解決方法,但捲曲將每個-d參數合併到請求參數,它doesn不允許未加引號的空格。

+0

沒有運氣;我得到//null不支持「/ /錯誤 – Ratha 2014-12-02 06:44:47

+0

$服務器 - 你可以發佈它的值 – 2014-12-02 07:28:58

+0

// SERVER = http:// localhost:9763 //,我使用MAC,我嘗試了簡單的curl請求並嘗試在tcpmon,// curl localhost:6666/-H「內容類型:應用程序/ json」-X POST -d @ swaggerimpl.json; //但我沒有看到-d在mac中運行或不運行任何郵件正文在tcpmon窗口 – Ratha 2014-12-02 07:35:17