0
私は、Typescript/angular2を使用してhttp.post経由でオブジェクトをWebサービスに渡すのに苦労しています。angular2 http POSTデータオブジェクトの問題
私が試した経路は以下の通りですが、いずれも機能しません。 (TS中)
マイコンポーネント:
export class DataFormComponent {
newPerson: any;
errorMessage: any;
constructor(private _appServices: AppServices){}
data:any = {"Login":"jsmith","TKID":"4000","FirstName":"john","LastName":"smith","FullName":"Smith, John","Email":"[email protected]","ShortTitle":"Library Specialist","Extension":"5000","JobTitle":"Librarian","OfficeFloor":"33","Department":"Library","DepartmentCode":"LIB"};
saveForm(){
this._appServices.saveData(this.data)
.subscribe(
(result: any) => {
this.newPerson = result;
}, (error) => {
// show error message
this.errorMessage = <any>error;
}
);
}
}
私の活字体のサービス:
saveData(data: any): Observable<any> {
// let v.s. var, let(block scope) has smaller scope than var(function scope).
let _url = 'webservices/wsServices.asmx/SaveData';
let body = JSON.stringify({data});
alert(body);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(_url, body, options)
.map(response => <any> response.json())
.catch(this.handleError);
}
ネットマイウェブサービス:()
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public void SaveData(string dataobject)
{
...
}
私は常に取得エラー。:
Response {_body: "{"Message":"No parameterless constructor defined f…,"ExceptionType":"System.MissingMethodException"}", status: 500, statusText: "Ok",...
私は古いトリックを使用しようとしました。 Angular1では、$ .paramとJSON.stringifyを使用してデータオブジェクトを変換し、それをWebサービスに渡しています。
this.saveData = function (oData) {
var input = $.param({ myDataParam: JSON.stringify(oData) });
return $http({
method: 'POST',
url: 'wsServices/wsProcess.asmx/SaveData',
data: input,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});
};
Angular2/Typescriptに使用できる同様の方法/サービスがあるかどうかは疑問です。
エラーはバックエンドコードから来ています。このエラーは、パラメータのないコンストラクタが欠落しているために投稿したjsonを逆シリアル化できません。それは角度とはあまり関係がありません。エラー500は「内部サーバーエラー」を意味します。 –
ありがとうございます。私はクライアントが私のWebサービスにぶつからなかったと思う。私はサーバーのサイトコード(Webサービス)に停止点を置いていますが、ハイライトはありません。 –
フレームワークがJSONを逆シリアル化することさえできないので、たぶんヒットしませんでした。スタックトレースが必要です。それを読んで。 JSONに対応するクラスの1つに、パラメータのないコンストラクタがありません。だからそれを修正してください。エラーメッセージを無視しないでください。 –