iT邦幫忙

0

android 無法連接php

大家好:
想請教,
我寫了一個APP連MYSQL
在本機測試都是OK的

我現在把我的PHP的API放到nas上
也有把我APP的連線網址改了
但他就是都無法登入
不知問題出在哪裡(是不是要開什麼port才可行之類的?
請高手們幫忙解答
謝謝
php 部分

<?php
require_once("db.php");
$emp_id=$_POST['emp_id'];
	$pwd=$_POST['pwd'];
	  $sql = "select* from emp where emp_id='$emp_id' and pwd= '$pwd'";
$q=mysqli_query($db, $sql);
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print(json_encode($output));
mysql_close();
?>

android部分

public class db {
    public static String executeQuery(String emp_id,String passwd) {
        String result = "";
       
        try { 
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://192.168.1.2/tt/cont.php");
            ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("emp_id", emp_id));
            params.add(new BasicNameValuePair("pwd", passwd));
            httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
            HttpResponse httpResponse = httpClient.execute(httpPost);
           HttpEntity httpEntity = httpResponse.getEntity();
            InputStream inputStream = httpEntity.getContent();
            BufferedReader bufReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8);
            StringBuilder builder = new StringBuilder();
            String line = null;
            while((line = bufReader.readLine()) != null) {
                builder.append(line + "\n");
            }
            inputStream.close();
            result = builder.toString();
        } catch(Exception e) { 
        }
        return result;
    }
}
看更多先前的討論...收起先前的討論...
Homura iT邦高手 1 級 ‧ 2018-11-26 15:55:41 檢舉
沒事看錯了...
不過你練習方向錯了..現在業界都是要Json方式接收資料..
不接受資料庫連接..
神威 iT邦新手 3 級 ‧ 2018-11-26 16:12:50 檢舉
純真的人:
所以我這樣是無法連NAS嗎?
因為android 的教學是可以的說
https://www.tutorialspoint.com/android/android_php_mysql.htm
Homura iT邦高手 1 級 ‧ 2018-11-26 16:16:24 檢舉
你的api可不可以跨網域連進去?
神威 iT邦新手 3 級 ‧ 2018-11-26 16:19:59 檢舉
Homura:
應該是沒辦法,我都內部網路而已
而且我nas跟手機還同網段
Homura iT邦高手 1 級 ‧ 2018-11-26 16:22:20 檢舉
內網連也是要允許跨網域@@
這段如果是.net api會預設關閉
php我就不清楚
如果你手機如果開瀏覽器連的到應該就不是這問題了
froce iT邦大師 6 級 ‧ 2018-11-26 16:22:31 檢舉
我記得Android和IOS都不讓你直接連DB,都是要你透過web api連。
Homura iT邦高手 1 級 ‧ 2018-11-26 16:23:56 檢舉
還有你程式碼明明是連php
標題確寫app連mysql
讓人誤會...
神威 iT邦新手 3 級 ‧ 2018-11-26 16:27:43 檢舉
Homura:
我用手機打這串網只是可以連的
http://192.168.1.2/tt/cont.php
但不知為何android就不行....
小魚 iT邦高手 1 級 ‧ 2018-11-26 19:01:58 檢舉
NAS好像要特別設定,
我之前也碰過一次,
但後來不是我設定的,
所以我也不知道怎麼設定.
froce iT邦大師 6 級 ‧ 2018-11-27 10:46:43 檢舉
>>還有你程式碼明明是連php
>>標題確寫app連mysql
>>讓人誤會...

我就是懶得看程式碼誤會的。XD

1 個回答

0
純真的人
iT邦高手 1 級 ‧ 2018-11-26 17:20:22
最佳解答

你有開Android 網路權限的宣告嗎?

<uses-permission android:name="android.permission.INTERNET" /> 
看更多先前的回應...收起先前的回應...
神威 iT邦新手 3 級 ‧ 2018-11-27 08:07:21 檢舉

有喔

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.leave"
    android:versionCode="1"
    android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
         <activity android:label="@string/off" android:name=".off"/>
         
    </application>
</manifest>

那你應該先逐步測試
先用webview連線http://192.168.1.2/tt/cont.php
看有無資料
若有資料的話~就是程式碼解析有問題~
若無資料的話~就是網路沒有開啟成功~
有可能你的android手機沒有在區網內吧?

神威 iT邦新手 3 級 ‧ 2018-11-27 09:34:11 檢舉

你好:
我測試過囉
http://192.168.1.2/tt/cont.php
我可以直接用電腦/手機連到這網站
連進去裡面顯示null
https://ithelp.ithome.com.tw/upload/images/20181127/20102983yI1s7RCeeL.png

我查了一下我手機的IP是
192.168.1.109
是同一網段的..

顯示null??
電腦/手機看到不是一堆Json字串嗎??
你確定cont.php有輸出資料??

神威 iT邦新手 3 級 ‧ 2018-11-27 10:06:50 檢舉

可以了
發現我這行

while($e=mysql_fetch_assoc($q))

要改成

while($e=mysqli_fetch_assoc($q))

就OK了
謝謝大家

Homura iT邦高手 1 級 ‧ 2018-11-27 10:21:34 檢舉

結果是PHP的問題@@

我要發表回答

立即登入回答