ご利用前に必ずお読みください。
フォーラムTOP > Xfree(旧無料レンタルサーバー) > php<->AndroidアプリはPOST?GET?その他?

php<->AndroidアプリはPOST?GET?その他?

by phpでアプリさん (83000cd5)
投稿数:2回
(ベストアンサー: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
です。

ご返事をお待ちしております。
お忙しいとは存じますがよろしくお願いします。

回答する
解決済みにする
by phpでアプリさん (83000cd5)
投稿数:2回
(ベストアンサー: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
トピック作成者からの返信 2021/02/05 21:25 posted(83000cd5)

Androidアプリを作ろうと思うと、非同期処理、画像の出入力がいると思います。
これから探そうと思います。

あと。AndroidStudioの動作が重いので。どうしても32GBくらいのPCがいるかなと。

NocodeでAndroidアプリが作れるようですが、
作りたいものに少しこだわりがありまして。。。