私は、角度のあるUIから春のブートRESTサービスを呼び出しています。 Spring Boot RestサービスがSpring起動アプリケーションとして実行されていれば、それはうまくいった。しかし、それをWARファイルに変換してJboss 6.2.4サーバーにデプロイすると、私は404を取得しています。UIからのRESTサービスコールは成功しましたが、リクエストJSONは渡されません。リクエストでJSON私は2つの文字列とアップロードされたExcelファイルを渡しています。角度のあるhttpと春のブートレストサービス
これは私の角度UIのHTTP呼び出しです
App.service('getHeatMapDataService', ['$http', '$q', function ($http, $q) {
this.getHeatMapData = function (scope) {
var url = 'http://localhost:8080/rest-services/fusiontables/upload';
var deferred = $q.defer();
$http({
method: 'POST',
url: url,
headers: {
'Content-Type': undefined
},
data: {
stateCd: scope.stateCd,
addressExtras: scope.addressExtras,
uploadFile: scope.upFile
},
transformRequest: function (data, headersGetter) {
var formData = new FormData();
angular.forEach(data, function (value, key) {
formData.append(key, value);
});
var headers = headersGetter();
delete headers['Content-Type'];
return formData;
}
})
.success(function (data) {
deferred.resolve(data);
console.log("Success");
console.log(data);
})
.error(function (data, status) {
deferred.reject(status);
console.log("Failed");
});
return deferred.promise;
}
}]);
これは、これが私の後私のuploadコマンド
public class HeatMapUploadCommand {
private String stateCd;
private String addressExtras;
private MultipartFile uploadFile;
ある
@RequestMapping(value="/upload", method=RequestMethod.POST)
@ResponseBody
public String getBoundaries(HeatMapUploadCommand uploadCommand) {
logger.info("Heat Map Controller invoked " + uploadCommand);
return null;
}
を働いていた私の春のブート残りコントローラですJbossにデプロイされた依頼は依然としてSpring Bootアプリケーションにヒットしますが、リクエストパラメータはすべてnullになります。
これは私はまだ
@RequestMapping(value="/upload", method=RequestMethod.POST)
@ResponseBody
public String getBoundaries(@RequestParam(value="stateCd") String stateCd,
@RequestParam(value="addressExtras") String addressExtras,
@RequestParam(value="uploadFile") MultipartFile file) {
System.out.println("Heat Map Controller invoked " + stateCd);
return null;
}
運としてコントローラを変更しようとした要求ペイロード
------WebKitFormBoundaryvCCnl3nhIgoW1MwR
Content-Disposition: form-data; name="stateCd"
CA
------WebKitFormBoundaryvCCnl3nhIgoW1MwR
Content-Disposition: form-data; name="addressExtras"
1234
------WebKitFormBoundaryvCCnl3nhIgoW1MwR
Content-Disposition: form-data; name="uploadFile"; filename="CAdata.xlsx"
Content-Type: application/vnd.openxmlformats- officedocument.spreadsheetml.sheet
------WebKitFormBoundaryvCCnl3nhIgoW1MwR--
あります。これが私の反応です。
{"timestamp":1464840821648,"status":400,"error":"Bad Request","exception":"org.springframework.web.bind.MissingServletRequestParameterException","message":"Required String parameter 'stateCd' is not present","path":"/rest-services/fusiontables/upload"}
HTTPステータス415サポートされていないメディアタイプが表示されます。 {"timestamp":1464874683832、 "status":415、 "error": "サポートされていないメディアタイプ"、 "例外": "org.springframework.web.HttpMediaTypeNotSupportedException"、 "message": "コンテンツタイプ 'multipart/form-data ;境界= ---- WebKitFormBoundarymRKqwcUfa6CJzALs; charset = UTF-8 'サポートされていません "、"パス ":"/rest-services/fusiontables/upload "} –