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

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

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

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

4036閲覧

AndroidでのHttpURLConnection通信について

mutata

総合スコア6

Java

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2017/01/30 11:32

編集2017/01/31 12:12

###前提・実現したいこと
AndroidからJavaサーブレットにPOSTしてJavaサーブレットで情報を取得してデータベースに登録したいです。
サーバーはTomcatを使っています。
Javaサーブレットで情報を受け取る方法とレスポンスするほうほうが知りたいです。

###発生している問題・エラーメッセージ

Javaサーブレットで情報を取得してもnullになっている。

###該当のソースコード

Java

1package to.msn.wings.networkpost; 2 3import android.support.v7.app.AppCompatActivity; 4import android.os.Bundle; 5import android.view.View; 6 7public class MainActivity extends AppCompatActivity { 8 AsyncNetworkTask task; 9 String data = "山田太郎"; 10 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.activity_main); 15 16 task = new AsyncNetworkTask(this); 17 task.execute("http://自分のIPアドレス/kai/Test", data); 18 } 19 20 public void btn_onClick(View view) { 21 task.cancel(true); 22 } 23} 24 25package to.msn.wings.networkpost; 26 27import android.content.Context; 28import android.os.AsyncTask; 29import android.os.SystemClock; 30import android.widget.ProgressBar; 31import android.widget.TextView; 32 33import java.io.BufferedReader; 34import java.io.IOException; 35import java.io.InputStreamReader; 36import java.io.OutputStream; 37import java.io.PrintStream; 38import java.net.HttpURLConnection; 39import java.net.URL; 40 41public class AsyncNetworkTask extends AsyncTask<String, Integer, String> { 42 private TextView txtResult; 43 private ProgressBar progress; 44 45 public AsyncNetworkTask(Context context) { 46 super(); 47 MainActivity activity = (MainActivity)context; 48 txtResult = (TextView)activity.findViewById(R.id.txtResult); 49 progress = (ProgressBar)activity.findViewById(R.id.progress); 50 } 51 52 @Override 53 protected String doInBackground(String... params) { 54 publishProgress(30); 55 SystemClock.sleep(3000); 56 publishProgress(60); 57 StringBuilder builder = new StringBuilder(); 58 try { 59 URL url = new URL(params[0]); 60 HttpURLConnection con = (HttpURLConnection)url.openConnection(); 61 con.setRequestMethod("POST"); 62 con.setRequestProperty("Content-Type", "text/plain; charset=utf-8"); 63 con.setDoOutput(true); 64 OutputStream os = con.getOutputStream(); 65 PrintStream ps = new PrintStream(os); 66 ps.print(params[1]); 67 ps.close(); 68 BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "Shift-JIS")); 69 String line; 70 while ((line = reader.readLine()) != null){ 71 builder.append(line); 72 } 73 } catch (IOException e) { 74 e.printStackTrace(); 75 } 76 publishProgress(100); 77 return builder.toString(); 78 } 79 80 @Override 81 protected void onPreExecute() { 82 progress.setVisibility(ProgressBar.VISIBLE); 83 } 84 85 @Override 86 protected void onProgressUpdate(Integer... values) { 87 progress.setProgress(values[0]); 88 } 89 90 @Override 91 protected void onPostExecute(String result) { 92 txtResult.setText(result); 93 progress.setVisibility(ProgressBar.GONE); 94 } 95 96 @Override 97 protected void onCancelled() { 98 txtResult.setText("キャンセルされました。"); 99 progress.setVisibility(ProgressBar.GONE); 100 } 101 102} 103 104 105Javaサーブレット 106package servlet; 107 108import java.io.IOException; 109 110import javax.servlet.ServletException; 111import javax.servlet.annotation.WebServlet; 112import javax.servlet.http.HttpServlet; 113import javax.servlet.http.HttpServletRequest; 114import javax.servlet.http.HttpServletResponse; 115 116/** 117 * Servlet implementation class Test 118 */ 119@WebServlet("/Test") 120public class Test extends HttpServlet { 121 private static final long serialVersionUID = 1L; 122 123 /** 124 * @see HttpServlet#HttpServlet() 125 */ 126 public Test() { 127 super(); 128 // TODO Auto-generated constructor stub 129 } 130 131 /** 132 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 133 */ 134 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 135 // TODO Auto-generated method stub 136 response.getWriter().append("Served at: ").append(request.getContextPath()); 137 } 138 139 /** 140 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 141 */ 142 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 143 // TODO Auto-generated method stub 144 request.setCharacterEncoding("UTF-8"); 145 146 String a = request.getParameter("data"); 147 System.out.print(a); 148 149 150 151 } 152 153}

###試したこと
byte型で送ったり

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
AndroidStudio2.2.3
pleiades-4.6.2

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

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

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

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

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

guest

回答2

0

自己解決

BufferedReaderで受け取れば出来ました。

投稿2017/02/01 12:21

mutata

総合スコア6

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

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

0

ストリームでデータをやりとする前にHttpURLConnection#connectをしないといけないはずです。

投稿2017/01/30 12:50

yona

総合スコア18155

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

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

mutata

2017/01/30 13:26

java.net.ProtocolException: Connection already establishedと表示されました。
yona

2017/01/30 13:51

Android側に出るんですか? また、コードはまとめて書くのではなく、クラスファイル毎に分割して書いてください。
mutata

2017/01/30 14:26

今サーブレットに接続できました。 コードは次回から気をつけます。 サーブレットに接続できたのですがサーブレットで情報を取得してもnullになってしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問