ワークライト用の 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、
負荷:真});
どうもありがとうドミニク