2017-11-14 6 views
0

開発したAPIを使用するAndroidアプリを開発しています。HttpUrlConnectionヘッダー情報は投稿されていますが、本文はありません

私はHttpUrlConnectionを使用してこの接続を行っていますが、これまでのログインは正常に動作します。この問題は、ログアウト時に発生します。それは何もしていない。私は郵便配達でログアウト要求を行うとうまくいきますが、HttpUrlConnectionではうまくいきません。

ログアウトは次のように動作します。 はhttp://ipaddress:12345/api/LogOut

にPOSTリクエストを行うと、ヘッダーには、ログインしているユーザーのトークンが含まれています。その後、サーバーはデータベースにアクセスし、そのユーザーのトークンを削除する必要があります:あなたは、いくつかの入力を行うまで

URL url = new URL(getString(R.string.url) + "LogOut"); 
HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

con.setRequestProperty("Content-Type", "application/json"); 
con.setRequestProperty("Token", TokenSingleton.getToken()); 

con.setReadTimeout(10000); 
con.setConnectTimeout(15000); 
con.setRequestMethod("POST"); 
con.setDoInput(true); 
con.setDoOutput(true); 
con.setUseCaches(false); 

con.connect(); 
con.getOutputStream().flush(); 
con.getOutputStream().close(); 
con.disconnect(); 
+0

この 'con.setDoInput(true);が必要でしょうか?サーバーに何かを読んでも何も読まないということを接続に伝えます。 – Vadim

+0

@ Vadim彼はそれを必要としませんが、これがデフォルトです。彼は何らかの入力をする必要があります。 – EJP

+0

falseに設定すると、サーバ側で動作するかどうかわかりません。それは "一方通行"または "火災と忘れ"要求を行います。私はより良い方法は、応答コードを読むことだと思います。サーバがそのような要求を受け入れるならば、それは "HTTP 204 No Content"になることができます。確かに、EJPは正しいです - 少なくとも応答コードを読み、それが入力ストリームまたはエラーストリームから適切に204読み込まれていない場合。 – Vadim

答えて

2

何も起こりません:

これは - 私は要求をやろうとしている方法です。少なくともgetResponseCode()に電話をして、200かどうかを確認してください。 200 < =レスポンスコード< = 299の場合、入力ストリームを使用することをお勧めします。それ以外の場合はエラーストリームを使用することをお勧めします。

NB setDoOutput(true)は、リクエストメソッドをPOSTに設定します。あなたはそれを自分で行う必要はありません。デフォルトはsetDoInput(true)です。 close()flush()を意味します。

+0

ありがとう、それは救命救助者でした。これはそれを解決し、HttpUrlConnectionのおかげで多くのことを明らかにしました。できるだけ早く私はそれを解決済みとマークします:)。 – Smiley

関連する問題