2016-02-05 49 views
0

UPDATE 2016年2月19日 - 見下如何通過Swagger或Ajax將數據發送到Presence Insights連接器API?

我建立了線下營銷的混合移動應用程序(即一個移動應用程序將與信標互動),我想用Bluemix存在洞察服務收集數據。問題是我無法通過SDK連接,因爲它是一個混合應用程序,因此我需要使用connectors API。我做了一些嘗試,我仍然得到401響應。

我已經試過了Ajax call setting the Basic Autentication Headers

beforeSend: function (xhr) { 
    xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password)); 
}, 

beforeSend: function (xhr) { 
    xhr.setRequestHeader ("Authorization", "Basic <my encrypted token>"); 
}, 

headers: { 
    "Authorization": "Basic " + btoa(USERNAME + ":" + PASSWORD) 
    }, 

(也與加密令牌,我不是重寫它)。

然後我做了一個Node.js的服務器和安裝招搖的客戶端(即我已經改變了策略):

router.post('/', function (req, res, next) { 
    var json = req.body.json; 
    var client = new Swagger({ 
     url: 'https://presenceinsights.ibmcloud.com/pi-swagger/the-connector-api', 
     success: function() { 
      console.log("success"); 
      console.log(JSON.stringify(client)); 
     }, 
     authorizations : { 
      easyapi_basic: new Swagger.PasswordAuthorization('username', 'password') 
     } 

    }); 

    res.end(); 
}); 

這一次,我已經取得了進展:

我可以成功連接,但我無法發送與數據的JSON。如果沒有訪問swagger.json,我該如何聲明發布請求的正文?有什麼方法可以訪問swagger.json的存在洞察力(這件事會解決我所有的問題)?

UPDATE 的信息與見解存在支持交流以後,我可以說,這是不可行的調用揚鞭客戶端。通過混合應用程序使用服務的唯一方法是構建代理Blumix運行時,它將數據從混合應用程序轉發到Presence Insights服務。不允許使用外部服務器或通過在應用程序內調用API進行任何其他嘗試,因爲CORS策略不允許使用它。 這對於連接器和管理是正確的。

我正在寫這個供將來參考。

回答

1

您要放置的端點URL需要是放大器定義或放大器規格的位置。加載完成後,您可以調用API。請注意,您正在初始化的swagger客戶端將根據該定義動態創建功能。現在

,周圍一點點戳戳,我沒有看到,招搖定義實際可用此服務:

https://presenceinsights.ibmcloud.com/pi-swagger/swagger.json

一旦你把在客戶端,那麼你就可以在技術上做出對電話服務器。

但是,這項服務存在問題。 swagger定義看起來不正確,因爲它不可能使用javascript客戶端。例如:

https://online.swagger.io/validator/debug?url=https://presenceinsights.ibmcloud.com/pi-swagger/swagger.json

顯示許多錯誤。我可能正在使用大招。從這個服務json不正確(我做了嗅探),但我指出 - 在構建客戶端時使用定義 - 是這個庫的工作原理。

+0

謝謝。我打開一張票來揭示這些問題。 – OneZeroOne

相關問題