2017-06-29 13 views
0

http://mywebsite:8080/api_name/user」のリクエストを受け入れ、リクエスト内の「api-key」変数との可能な接続をチェックし、パスワードの種類を含んだwebservice(実際にはdrupal 7プラグインサービスで生成)を持っています。multipart/form-dataリクエストとしてパラメータを使用してionic2(typescript)でhttp投稿を送信するにはどうすればよいですか?

私のionic2/cordovaアプリケーションでサービスに接続しようとすると、リクエスト側のペイロードのペイロードがサーバ側で空になります($ _REQUESTは空の配列であり、必要なapi-keyを含んでいません。要求が失敗する)。

https://requestb.in/で要求をデバッグすると、期待どおりに変数が要求の本文に含まれていることが示されます。

ウェブサービスは、Google側から送信された投稿要求がうまくいっているため、うまくいきます(私はrequestb.inへの郵便配達要求を差していることに気づいたと思いました。 'api-key'パラメータは"Form/Post Parameters"と呼ばれる部分で、application/jsonの代わりにcontent typeが 'multipart/form-data'になっています)

私のコード(正しいと思われる)はちょっと混乱していますここでは...

を働いていないと、Webサービスに接続しようとする関数のコードは次のとおりです。

register(username,password,email){ 
     var headers = new Headers(); 
     headers.append('Accept', 'application/json'); 
     let options = new RequestOptions({ headers: headers }); 

     let postParams = { 
     "api-key" : "someSecret", 
     "name" : "something", 
     "mail" : "somethingelse" 
     } 

     this.http.post("http://mywebsite:8080/api_name/user", postParams, options).subscribe(data => { 
      console.log("ok"); 
     }, error => { 
      console.log("error:"+error);// Error getting the data 
     }); 
} 

EDIT: "$ _REQUESTはHTMLフォームを送信した後にデータを収集するために使用されています"ということを読んでいるので、問題は実際にリクエストを 'multipart/form-data'として送信しますが、ヘッダーの 'Content-type'を変更するだけでは十分ではないようです。私はここでそれが正しいコードであり、試行の時間後(NO幸運で)

headers.append('Content-type', 'multipart/form-data'); 

答えて

1

これを追加しようとした:

register(username,password,email){ 
     var headers = new Headers(); 
     headers.append('enctype', 'multipart/form-data'); 
     let options = new RequestOptions({ headers: headers }); 

     let postParams:FormData = new FormData(); 
     postParams.append("api-key", "something secret"); 

     this.http.post("http://mywebsite:8080/api_name/user", postParams, options).subscribe(data => { 
      console.log("ok"); 
     }, error => { 
      console.log("error:"+error); // Error getting the data 
     }); 
} 
関連する問題