Androidアプリからnode.jsに接続するとFile Not Found Exception

Java
Android
node.js
Express

ちょっと解決まで時間がかかったので書いておきます。
Expressは最近触り始めたのであまり知識がありません。

Androidアプリから、node.js + expressのサーバーに通信して、結果を取得するAPIを作成していました。
が、AndroidアプリでURLに接続すると

 File Not Found Exception 

で接続できない。
ブラウザでは普通に接続できるんですけど。
Javaではあるある~ ですよね。
サーバーからは404が帰ってきます。

で、最初はexpressの方かな?と思いまして、下記のようにわざわざ

 res.status(200)

をつけてみました。

 router.get('/route_out', function(req, res, next) {
 	console.log("route_out");
 
  res.status(200).send('broadcasted');
 
 });

ですが、

 File Not Found Exception 

は依然としてそのまま…。

node.jsを走らせていると、コンソールに次のような表示が…。

 POST /broadcast/route_out 404 35.966 ms - 947

あれっ アプリからはGETではなくて、POSTで接続してるじゃん!
とアプリのコードをよく読むと

 @Override
 protected String doInBackground(String... params) {
 
 	String string = null;
 	HttpURLConnection urlConnection = null;
 

try {

 			
 		URL url = new URL(params[0]);
 		   
 		urlConnection = (HttpURLConnection) url.openConnection();
 	    	urlConnection.setDoOutput(true);
 	    	urlConnection.setChunkedStreamingMode(0);
 
 	    	InputStream in;
 		    
       		int status = urlConnection.getResponseCode();
 
                if (status != HttpURLConnection.HTTP_OK){
 		            
 	            	in = urlConnection.getErrorStream();
 	            	Log.e(TAG, "サーバーからのレスポンスエラー " + status);
 	            
 	            }else{
 		 
 	            	in = new BufferedInputStream(urlConnection.getInputStream());
        		string =convertInputStreamToString(in);
 		    	Log.d(TAG, string);
 		    		    
 	            }
                
 		} catch (IOException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}finally {
 		    urlConnection.disconnect();
 		}
 
 		return string;
 }

となっていて、

 urlConnection.setDoOutput(true);
 urlConnection.setChunkedStreamingMode(0);

この二つがいらなかったですね(;^ω^)

この二つを消して、下記を加えたら解決しました!

 urlConnection.setRequestMethod("GET");

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です