質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

0回答

341閲覧

androidのPOST送信の際ヘッダとか諸々動的に変えたい

luckyclock

総合スコア73

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

1クリップ

投稿2017/12/27 08:50

JSONをPOST送信→サーバーから認証キーがくる→認証キーを付けてデータをPOST送信
という処理の流れを考えています。
HTTP通信はokHttpの同期通信をAsyncタスクを継承したクラスで使用しています。

ここで質問なのですが
最初の認証キーを得るためのPOST送信と、認証キーをつけてデータをPOST送信する
時はContent-Typeも違うしヘッダーにAuthorizationがついたりつかなったりで色々異なります。
まず
Content-Typeは引数paramsに入れれば動的に変えることができますが、
ヘッダーにAuthorizationをつけたり付けなかったりというのはどういう風に
するのがベターでしょうか?
自分が思いついたのがparamsに条件を与えてif分でnew Request.Builder部分を
分岐する方法ですが、あまりスマートじゃない気がしてます。
そもそもparamsにいくつも引数を与えるのもあまりいいような気がしていません。

それともう一つサーバーからの認証キーを受けて、認証キーを付けてデータをpost通信する必要がありますが、MainActivityの応答を受けるonPostExecuteでまたHttpPostTaskをnewするというやり方は普通じゃない気がするのですが、この辺りもいい方法があったら教えていただきたいです。

java

1 protected String doInBackground(String... params) { 2 String result = ""; 3 4 try { 5 // リクエストボディを作る 6 RequestBody requestBody = RequestBody.create( 7 MediaType.parse(params[0]), params[1] 8 ); 9 10 // リクエストオブジェクト 11 Request request = new Request.Builder() 12 .url(post_url) 13 .header("Authorization", params[2]) 14 .post(requestBody) 15 .build(); 16 17 // クライアントオブジェクトを作って 18 OkHttpClient client = new OkHttpClient(); 19 20 // リクエストして結果を受け取って 21 try { 22 Response response = client.newCall(request).execute(); 23 result = response.body().string(); 24 } catch (IOException e) { 25 e.printStackTrace(); 26 } 27 Log.d("tag",params[0]); 28 29 } catch (Exception e) { 30 e.printStackTrace(); 31 } 32 return result; 33 }

MainActivityの処理

java

1 public void httpPostEditOp(){ 2 // 接続先のURLを指定してHTTP POST実行 3 String url = "http://***"; 4 JSONObject jsonobject = new JSONObject(); 5 6 try { 7//jsonデータを入れる 8 } catch (JSONException e) { 9 e.printStackTrace(); 10 } 11 12 HttpPostTask httpPostTaskt = new HttpPostTask(this, url, new HttpPostTask.HttpPostCallback() { 13 public void onPreExecute() { 14 // do something 15 } 16 public void onProgressUpdate(int progress) { 17 // do something 18 } 19 public void onPostExecute(String result) { 20 // do something 21 //更新閉じる 22 } 23 public void onCancelled() { 24 // do something 25 } 26 }); 27 28 httpPostTaskt.execute("application/json; charset=utf-8",jsonobject.toString(),""); 29 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問