php<->AndroidアプリはPOST?GET?その他?
by
phpでアプリさん
(83000cd5)
投稿数:2回
(ベストアンサー:0回)
(ベストアンサー:0回)
2021/02/03 17:33
Androidアプリについて2回目の投稿になります。
Androidアプリ<->PHP<->mysqlの作り方についてです。
1.AndroidアプリからPHPへの個人データや画像データは
通常GET送信ですか?POST送信ですか?
2.また、PHPからのAndroidアプリへの返事は、
PHPからJAVAに向けたGET送信?POST送信?でしょうか?その時のURLは?
Androidは持ち歩いているはずだからURLで特定できないと思います。
もしかして電話番号や他の特定できるものがあるのでしょうか?
もしくはアプリからPHPに送った後の表示画面をそのまま受け取るのでしょうか?
3.あと、直接関係ないかもしれませんが、JAVAでPHPへのPOST送信は
http://ではなく、https://ではないと、送れないのでしょうか?
Androidアプリを作るAndroid Studioが自宅ノートPCのメモリ4GBのため
動かないので、とりあえずEclipseのJAVAでJAVAからPHP経由でMYSQL動くか
試しました。(PCの件は後で考えます。中古でデスクトップ32GBで5万くらいかな。
レンタルで安くAndroidStudio動くところないでしょうか?)
A.JAVAからPHPにはGET送信で送信する。
B.PHP側でMYSQLにGETのデータをINSERTし、SELECTで画面に表示する。
C.JAVAでレスポンス画面を受け取り、JAVAで表示する。
これはできました。その時のJAVAとPHPのプログラムです。
---------JAVA側 ここから---------
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
public class HttpURLConnectionExample {
private final String USER__AGENT = "Mozilla/5.0";
public static void main(String[]args) throws Exception {
HttpURLConnectionExample http = new HttpURLConnectionExample();
System.out.println("Testing 1 - Send Http GET request");
http.sendGet();
}
//HTTP GET request
private void sendGet() throws Exception {
String url = "http://dkz4kuus.php.xdomain.jp/postget.php?q=mkyong";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
//optional default is GET
con.setRequestMethod("GET");
//add request header
con.setRequestProperty("User-Agent", USER__AGENT);
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println(response.toString());
}
}
---------JAVA側 ここまで---------
---------PHP側 ここから---------
<?php
$postget = $_GET["q"];
$url = 'mysql1.php.xdomain.ne.jp'; //mysqlサーバー名
$user = '****************'; //ユーザーID
$pass = '*********'; //パスワード
$db = '***********'; //データベース名
$link = mysqli_connect($url,$user,$pass) or die("MySQL接続失敗");
$sdb = mysqli_select_db($link,$db) or die("データベース選択失敗");
$link->set_charset('utf8');
$sql = "CREATE TABLE citys (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
population INTEGER NOT NULL,
created timestamp not null
)";
// SQL実行
$res = $link->query($sql);
if ($result = $link->query("SHOW TABLES LIKE 'citys'"))
{
if ($result->num_rows)
{
echo 'テーブルが存在';
}
}
// INSERT
$sql = "INSERT INTO citys (name, population, created)
VALUES ('".$postget."', '1000000', now())";
$res = $link->query($sql);
// 完成済みのSELECT文を実行する
$sql = "SELECT id,name,population,created FROM citys";
$result = $link->query($sql);
while ($row = $result->fetch_assoc()) {
echo $row["id"].$row["name"].$row["population"].$row["created"]."<br>";
}
// 接続クローズ
$link->close();
?>
---------PHP側 ここまで---------
動かしたPHPのURLは、
http://dkz4kuus.php.xdomain.jp/postget.php
です。
ご返事をお待ちしております。
お忙しいとは存じますがよろしくお願いします。
Androidアプリ<->PHP<->mysqlの作り方についてです。
1.AndroidアプリからPHPへの個人データや画像データは
通常GET送信ですか?POST送信ですか?
2.また、PHPからのAndroidアプリへの返事は、
PHPからJAVAに向けたGET送信?POST送信?でしょうか?その時のURLは?
Androidは持ち歩いているはずだからURLで特定できないと思います。
もしかして電話番号や他の特定できるものがあるのでしょうか?
もしくはアプリからPHPに送った後の表示画面をそのまま受け取るのでしょうか?
3.あと、直接関係ないかもしれませんが、JAVAでPHPへのPOST送信は
http://ではなく、https://ではないと、送れないのでしょうか?
Androidアプリを作るAndroid Studioが自宅ノートPCのメモリ4GBのため
動かないので、とりあえずEclipseのJAVAでJAVAからPHP経由でMYSQL動くか
試しました。(PCの件は後で考えます。中古でデスクトップ32GBで5万くらいかな。
レンタルで安くAndroidStudio動くところないでしょうか?)
A.JAVAからPHPにはGET送信で送信する。
B.PHP側でMYSQLにGETのデータをINSERTし、SELECTで画面に表示する。
C.JAVAでレスポンス画面を受け取り、JAVAで表示する。
これはできました。その時のJAVAとPHPのプログラムです。
---------JAVA側 ここから---------
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
public class HttpURLConnectionExample {
private final String USER__AGENT = "Mozilla/5.0";
public static void main(String[]args) throws Exception {
HttpURLConnectionExample http = new HttpURLConnectionExample();
System.out.println("Testing 1 - Send Http GET request");
http.sendGet();
}
//HTTP GET request
private void sendGet() throws Exception {
String url = "http://dkz4kuus.php.xdomain.jp/postget.php?q=mkyong";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
//optional default is GET
con.setRequestMethod("GET");
//add request header
con.setRequestProperty("User-Agent", USER__AGENT);
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println(response.toString());
}
}
---------JAVA側 ここまで---------
---------PHP側 ここから---------
<?php
$postget = $_GET["q"];
$url = 'mysql1.php.xdomain.ne.jp'; //mysqlサーバー名
$user = '****************'; //ユーザーID
$pass = '*********'; //パスワード
$db = '***********'; //データベース名
$link = mysqli_connect($url,$user,$pass) or die("MySQL接続失敗");
$sdb = mysqli_select_db($link,$db) or die("データベース選択失敗");
$link->set_charset('utf8');
$sql = "CREATE TABLE citys (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
population INTEGER NOT NULL,
created timestamp not null
)";
// SQL実行
$res = $link->query($sql);
if ($result = $link->query("SHOW TABLES LIKE 'citys'"))
{
if ($result->num_rows)
{
echo 'テーブルが存在';
}
}
// INSERT
$sql = "INSERT INTO citys (name, population, created)
VALUES ('".$postget."', '1000000', now())";
$res = $link->query($sql);
// 完成済みのSELECT文を実行する
$sql = "SELECT id,name,population,created FROM citys";
$result = $link->query($sql);
while ($row = $result->fetch_assoc()) {
echo $row["id"].$row["name"].$row["population"].$row["created"]."<br>";
}
// 接続クローズ
$link->close();
?>
---------PHP側 ここまで---------
動かしたPHPのURLは、
http://dkz4kuus.php.xdomain.jp/postget.php
です。
ご返事をお待ちしております。
お忙しいとは存じますがよろしくお願いします。
by
phpでアプリさん
(83000cd5)
投稿数:2回
(ベストアンサー:0回)
(ベストアンサー:0回)
2021/02/05 21:13
Android PHP POST GETで検索したところ、
参考になるサイトがありました。
―――――ここから―――――
基本的には、両方とも送受信が可能です。
・GETでは画像データが欲しいというリクエストを送信して、その画像データを受け取る。
・POSTではデータベースの情報をサーバーに保存するために大量のデータを送るなど。
GET
サーバから情報を取得するケースに使うことが多い
データを送信できるのはテキストのみで少量しか送れない
URLに付加して送信するので簡単
POST
サーバへ情報を登録するケース
バイナリーデータの送信
GETでのデータ送信限度を超えてしまう場合
送信データをBODY部分に含めて送信できるので制限はない
―――――ここまで―――――
参考URL
https://akira-watson.com/android/httpurlconnection-post.html
あと、JAVAでPHPにPOST送信できたので、ソースを書いておきます。
―――――ここから―――――
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class test {
public static void main(String[] args) {
String urlString = "http://dkz4kuus.php.xdomain.jp/postget.php";
try {
URL url = new URL(urlString);
URLConnection uc = url.openConnection();
uc.setDoOutput(true);//POST可能にする
uc.setRequestProperty("User-Agent", "@IT java-tips URLConnection");// ヘッダを設定
uc.setRequestProperty("Accept-Language", "ja");// ヘッダを設定
OutputStream os = uc.getOutputStream();//POST用のOutputStreamを取得
String postStr = "foo1=bar1&foo2=bar2";//POSTするデータ
PrintStream ps = new PrintStream(os);
ps.print(postStr);//データをPOSTする
ps.close();
InputStream is = uc.getInputStream();//POSTした結果を取得
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String s;
while ((s = reader.readLine()) != null) {
System.out.println(s);
}
reader.close();
} catch (MalformedURLException e) {
System.err.println("Invalid URL format: " + urlString);
System.exit(-1);
} catch (IOException e) {
System.err.println("Can't connect to " + urlString);
System.exit(-1);
}
}
}
―――――ここまで―――――
参考 https://www.atmarkit.co.jp/ait/articles/0407/27/news104.html
参考になるサイトがありました。
―――――ここから―――――
基本的には、両方とも送受信が可能です。
・GETでは画像データが欲しいというリクエストを送信して、その画像データを受け取る。
・POSTではデータベースの情報をサーバーに保存するために大量のデータを送るなど。
GET
サーバから情報を取得するケースに使うことが多い
データを送信できるのはテキストのみで少量しか送れない
URLに付加して送信するので簡単
POST
サーバへ情報を登録するケース
バイナリーデータの送信
GETでのデータ送信限度を超えてしまう場合
送信データをBODY部分に含めて送信できるので制限はない
―――――ここまで―――――
参考URL
https://akira-watson.com/android/httpurlconnection-post.html
あと、JAVAでPHPにPOST送信できたので、ソースを書いておきます。
―――――ここから―――――
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class test {
public static void main(String[] args) {
String urlString = "http://dkz4kuus.php.xdomain.jp/postget.php";
try {
URL url = new URL(urlString);
URLConnection uc = url.openConnection();
uc.setDoOutput(true);//POST可能にする
uc.setRequestProperty("User-Agent", "@IT java-tips URLConnection");// ヘッダを設定
uc.setRequestProperty("Accept-Language", "ja");// ヘッダを設定
OutputStream os = uc.getOutputStream();//POST用のOutputStreamを取得
String postStr = "foo1=bar1&foo2=bar2";//POSTするデータ
PrintStream ps = new PrintStream(os);
ps.print(postStr);//データをPOSTする
ps.close();
InputStream is = uc.getInputStream();//POSTした結果を取得
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String s;
while ((s = reader.readLine()) != null) {
System.out.println(s);
}
reader.close();
} catch (MalformedURLException e) {
System.err.println("Invalid URL format: " + urlString);
System.exit(-1);
} catch (IOException e) {
System.err.println("Can't connect to " + urlString);
System.exit(-1);
}
}
}
―――――ここまで―――――
参考 https://www.atmarkit.co.jp/ait/articles/0407/27/news104.html
トピック作成者からの返信 2021/02/05 21:25 posted(83000cd5)
Androidアプリを作ろうと思うと、非同期処理、画像の出入力がいると思います。
これから探そうと思います。
あと。AndroidStudioの動作が重いので。どうしても32GBくらいのPCがいるかなと。
NocodeでAndroidアプリが作れるようですが、
作りたいものに少しこだわりがありまして。。。