2017-10-16 21 views
0

NativeScriptで作成したモバイルアプリからC#で作成したwebapiに投稿しようとしています。NativeScript - nativescript-background-http not working

私はnativescript-imagepickernativescript-background-httpの両方を使用しています。 しかし、errorイベントは常に発生しています。

これは私が持っているコードです: 私の2つの輸入:

SelectImage(): void { 
     let context = imagepicker.create({ 
      mode: "single" 
     }); 

     context.authorize() 
       .then(() => { return context.present() }) 
       .then((selection) => { 
        selection.forEach((selected) => { 
         this.signupModel.CIPath = selected.fileUri; 
        }) 
       }).catch((e) => { 
        console.log(e); 
       }); 
    } 

そして、これは私がしようとしている方法です:

import * as imagepicker from "nativescript-imagepicker"; 
import * as bghttp from "nativescript-background-http"; 

これは私が画像のURIを得た方法でありますデータを投稿してください:

SignUp(): void { 
     let session = bghttp.session("image-upload"); 

     let request = { 
      url: "http://localhost:53286/api/Home/Signup", 
      method: "POST", 
      headers: { 
       "Content-Type": "application/octet-stream", 
       "File-Name": this.signupModel.CIPath 
      }, 
      description: "{ 'uploading': 'Uploading file...' }" 
     }; 

     let task: bghttp.Task; 

     let params = [{ 
      name: "ImageCI", mimeType: "image/jpeg", filename: this.signupModel.CIPath 
     }, { 
      name: "Rut", value: this.signupModel.Rut 
     }, { 
      name: "Name", value: this.signupModel.Name 
     }, { 
      name: "Address", value: this.signupModel.Address 
     }, { 
      name: "Commune", value: this.signupModel.Commune 
     }, { 
      name: "PhoneNumber", value: this.signupModel.PhoneNumber 
     }, { 
      name: "Email", value: this.signupModel.Email 
     }, { 
      name: "Password", value: this.signupModel.Password 
     }]; 

     task = session.multipartUpload(params, request); 

     task.on("error", (response: any) => { 
      console.log(JSON.stringify(response)); 
      alert({title: "Sistema 3 Esferas", message:"Error subiendo imagen...", okButtonText: "Cerrar"}); 
     }); 

     task.on("responded", (response: any) => { 
      console.log(JSON.stringify(response)); 
     }); 
    } 

どうしたらいいですか?前もって感謝します。 :)

+1

エミュレータでのテスト?もしデフォルト設定が 'localhost'では動作しないことに注意してください - 詳細についてはこのスレッドを見てくださいhttps://stackoverflow.com/a/39958955/4936697 –

+0

何がエラーレスポンスですか? –

答えて

0

ありがとう、ニック、あなたのコメントのために。

はい、機能しました。

url: "http://localhost:53286/api/Home/Signup" 

: は、私はこの行を変更しなければならなかった

url: "http://10.0.2.2:53286/api/Home/Signup" 

そして、それは問題を解決しました。 :)