HTTPClient

各種Web APIにつなげるために必須となるHTTPのクライアントとなるHTTPClientですが、 Android,iOSで動作上の違いがあります。

  • HTTPメソッドはGET,POSTのみのサポート Android,iOS共に CREATE,PUT,DELETE動作しました
  • POSTでバイナリデータも扱うことが可能 → Androidはバグのため現在は直接バイナリ指定できません

ファイルアップロード(データパート自作)

ヘッダのセットとsendでバイナリの送信である程度はファイルアップロードに使えますが、 データパートをさらに設定する場合は以下のページを参考にします。

Titanium Tutorial: How to upload a file to a server

ベーシック認証

var xhr=Titanium.Network.createHTTPClient();
xhr.open('GET', 'http://myurl');
xhr.setRequestHeader('Authorization', 'Basic' + Titanium.Utils.base64encode(username + ':' + password) );
xhr.send();

Tips

[Android]ファイルのアップロードができない

ver2.1.1

Androidでカメラで撮った画像などをsend(bynariData)でアップロードするとなぜか15byteのファイルが作成されてしまいます。

この15byteという数字が何かと思っていたのですが“[Ti Blob Object]“という文字列ことがわかりました。

つまり、httpClient.send(blobData) と実行した際にはblobDataを文字列出力した値がバイナリの代わりに送られているのです。 iOSでは問題がないので、記述方法に間違いがあるというわけではなさそうです。

上記のように問題はにはなっているのですが修正は2.2ということになるようです。なおPUT限定のように書いてありますが、POSTも同じ挙動です。

BlobではなくFileを指定しても結果は同じです。(ファイルサイズは増えます)

send({image:bynaryData})のようにオブジェクトにすると送られるのでサーバ側をいじれる場合は、対応はできそうです。

titanium/network/http_client.txt · 最終更新: 2012/08/12 17:12 by enibloadmin
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0