ワークライト用の HTTP アダプターを作成する必要がありますが、パラメーターを介してプログラムで URL を提供する必要があります。
1) ユーザー/パスワードは渡すことができましたが、URL は渡すことができませんでした。それを行う方法はありますか?
また、REST API を呼び出すための独自の Java アダプターを作成しようとしました。アダプターをテストすると機能しますが、応答がワークライトで期待される形式になっていないようです。このエラーが発生しました:
2) BAD_PARAMETER_EXPECTED_DOCUMENT_OR_ARRAY_OF_DOCUMENT.
私の Java アダプターは JSONArtifact (JSONObject) を返しますが、ワークライトはこれを { "array":{...}} などの別の JSONObject に埋め込むことを望んでいるようです。JSONObject をワークライトが期待する形式に変換する方法はありますか?
org.apache.wink.json4j.JSON をインポートします。 org.apache.wink.json4j.JSONArtifact をインポートします。 org.apache.wink.json4j.JSONException をインポートします。 private Header headerUserAgent = new Header("User-Agent", "Mozilla"); private Header headerAccept = new Header("Accept", "application/json"); プライベート文字列のホスト名。 プライベート文字列 baseURL; 保護された MyHttpClient(文字列 userName, 文字列 userPassword, 文字列 hostName, 文字列 baseURL ) { 素晴らしい(); クレデンシャル defaultcreds = new UsernamePasswordCredentials(userName, 利用者パスワード); this.getState().setCredentials(AuthScope.ANY, defaultcreds); this.hostName = ホスト名; this.baseURL = baseURL; } プライベート GetMethod getGetMethod(String url) は URIException をスローします { GetMethod httpMethod = new GetMethod(new HttpsURL("https://"+hostName+baseURL+url).getEscapedURI()); addCommonHeaders(httpMethod); httpメソッドを返します。 } プライベート JSONArtifact getResponseAsJSONObject(InputStream inputStream) が IOException をスローします { InputStreamReader リーダー = 新しい InputStreamReader(inputStream); 試す { JSONArtifact json = JSON.parse(リーダー); json を返します。 } キャッチ (NullPointerException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } キャッチ (JSONException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } null を返します。 }
アダプタ:
関数 getResponse(ユーザー、パスワード) { var client = new com.itdove.mypackage.MyHttpClient(user,password,"myurl","mybaseurl"); 戻る { 配列 : client.executeGet("mypath") }; }
これで動作しますが、このソリューションはサービス URL をパラメーターとして提供しません。
関数 getResponseAdapters(パス、ユーザー名、パスワード) { 変数入力 = { メソッド:「取得」、 返されたContentType: 'json', ヘッダー: { 'ユーザーエージェント':'Mozilla', 'Authorization': 'Basic '+Base64.encode(ユーザー名+':'+パスワード), } 、 パス : '/resources/' + パス }; return WL.Server.invokeHttp(入力); } 関数 getResponse(ユーザー名、パスワード) { getMySCAWSAdapters (パス、ユーザー名、パスワード) を返します。 }
コレクション
vAPPArrayAdapterOptions = { 名前: 'myResponseAdapter', 交換: ''、 削除する: ''、 追加: ''、 ロード: { 手順: 'getResponse', params: ["ユーザー","パスワード"], キー:「配列」 }、 受け入れる: 関数 (データ) { 戻ります (data.status === 200); } }、 ... vAPPArray = wlJsonStore.initCollection( "vAPPアレイ", vAPPArraySearchFields、 {アダプタ: vAPPArrayAdapterOptions, onSuccess: initCollectionSuccessCallback、 onFailure: initCollectionFailureCallback、 負荷:真});
どうもありがとうドミニク