HttpURLConnectionでハマったこと
Androidアプリの開発に携わるようになったので、ちょっとそちらでハマった話。
アプリからどこぞのAPIを叩く時など、httpやhttpsで通信を行います。
その時利用したのが
java.net.HttpURLConnection
これを使うのがスタンダードみたい。
それでメソッドにはGETやPOST、PUTやDELETEなどを
setRequestMethod(String)で指定するわけだけど、
POSTを使う場合には setDoOutput(true) をしないといけない。
ただしGETの時にtrueを指定しても動作するから、
どんなメソッドを使う時もとりあえずsetDoOutput(true)にしてた。
で、実際使っていたら、GETメソッドでコールするAPIを
なぜかPOSTでコールしちゃう端末が現れてしまった。
4.0系の端末だけがPOSTになる。。
明示的にGETを指定しているにも関わらず、POSTになっちゃう。。。
途方に暮れていたら、こんな記事が
http://webdiary.com/tag/setdooutput/
Android4.0から仕様が変わり、
setDoOutput(true)にすると、いくらsetRequestMethod(String)で指定しても
POSTになるらしい。
よく見るとandroid developersのサイトにも書いてあった。
http://developer.android.com/reference/java/net/HttpURLConnection.html
各バージョンでのテストは重要だな〜