元のコードは以下の通りです:
public String getMyMatter1(HttpS res, String uuid, String num, String pagenum){
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods","GET, POST");
Map<String,Object> map = new HashMap<>();
if(StringUtil.isNotEmpty(uuid) && StringUtil.isNotEmpty(num)
StringUtil.isNotEmpty(pagenum)){
try{
int overtime = ; ///タイムアウト時間、デフォルト60秒
String oprName = "getTransList";
List<Object> value = new ArrayList<Object>();
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL("http://***/?dl"));
call.setTimeout(overtime);
call.addParameter("uuid", XMLType.XSD_STRING, ParameterMode.IN);
value.add(uuid);
call.addParameter("pagenum", XMLType.XSD_INT, ParameterMode.IN);
value.add(Integer.parseInt(pagenum));
call.addParameter("num", XMLType.XSD_INT, ParameterMode.IN);
value.add(Integer.parseInt(num));
call.setReturnType(XMLType.XSD_STRING);
call.setOperationName(oprName);
Object result = call.invoke(value.toArray());
String jsonResult = (String)result;
return jsonResult;
} catch (Exception e) {
map.put("result","fail");
map.put("message"," ");
}
}else{
map.put("result","fail");
map.put("message","パラメトリックエラー");
}
return JsonUtil.objectToString(map);
}
最初、私は複数のメソッド名があると思ったので、私はメソッド名の名前空間を指定しようとし、プラスcall.setOperationName(new QName("http://***/external/", "getTransList"))、プラスその後、それはまだ動作しません。その後、私は呼び出しのWebサービスインターフェイスの例を見つけるためにインターネットに行き、コードを比較し、パラメータに独自のコードが対応する名前空間を指定していないことがわかり、さらにcall.addParameter(new QName("http://***/external/", "num"), XMLType.INT,ParameterMode.IN)、さらにpostmanコールを使用した後、まだ動作しません、まだデータは空です。数時間探して、そうでなければ問題はありませんし、最終的に方法はありませんが、ちょうど変更されたパラメータの順序を考えて、私はそう考える方法を知らない、ちょうどそれを行うが、また成功しました。
public String getMyMatter(HttpS res, String uuid, String num, String pagenum){
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods","GET, POST");
Map<String,Object> map = new HashMap<>();
if(StringUtil.isNotEmpty(uuid) && StringUtil.isNotEmpty(num)
StringUtil.isNotEmpty(pagenum)){
try{
int overtime = ; ///タイムアウト時間、デフォルト60秒
final String endpoint = "http://***/?dl";
String rec_msg = "";
try {
// サービスコールを作成する
Service service = new Service();
Call call = (Call) service.createCall();
// サービスのURLを設定する
call.setTargetEndpointAddress(new URL(endpoint));
call.setUseSOAPAction(true);
call.setTimeout(overtime);
// パラメータの設定
call.addParameter(new QName("http://***/al/","id"), XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName("http://***/al/","um"), XMLType.XSD_INT,ParameterMode.IN);
call.addParameter(new QName("http://***/al/","um"), XMLType.XSD_INT,ParameterMode.IN);
// メソッド名を指定する
call.setOperationName(new QName("http://***/al/","st"));
// 戻り値の型を設定する
call.setReturnType(XMLType.XSD_STRING);
// リモートコール・ウェブサービス・インターフェース
rec_msg = (String) call.invoke(new Object[] {uuid,Integer.parseInt(num),Integer.parseInt(pagenum)});
return rec_msg;
} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
} catch (Exception e) {
map.put("result","fail");
map.put("message"," ");
}
}else{
map.put("result","fail");
map.put("message","パラメトリックエラー");
}
return JsonUtil.objectToString(map);
}