2016-04-21 86 views
0

我有一个用于从php文件获取数据的unity3d c#脚本。从php获取数据到c#脚本

统一C#文件:

using UnityEngine; 
using System.Collections; 

public class FrmPhp : MonoBehaviour { 

    // Use this for initialization 
    void Start() { 
     string url = "http://localhost/abc/PgComm.php"; 
     WWW www = new WWW(url); 
     StartCoroutine(WaitForRequest(www)); 
    } 
    IEnumerator WaitForRequest(WWW www) 
    { 
     yield return www; 
     // check for errors 
     if (www.error == null) 
     { 
      Debug.Log("Text : "www.text); 
      Debug.Log("DownLoad Bytes: "www.bytesDownloaded.ToString()); 
     } else { 
      Debug.Log("WWW Error: "+ www.error); 
     }  
    } 

    // Update is called once per frame 
    void Update() { 

    } 
} 

PHP文件

<html> 
    <body> 
     <table name="mytable" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td> 
        Friend ID 
       </td> 

      </tr> 
     <?php 
     $db = pg_connect('host=localhost dbname=MyDB user=postgres password=xyz'); 

     $query = "SELECT pk FROM Table1"; 

     $result = pg_query($query); 
     //printf ("<tr><td>%s</td>", $result); 

     if (!$result) { 
      echo "Problem with query " . $query . "<br/>"; 
      echo pg_last_error(); 
      exit(); 
     } 

     while($myrow = pg_fetch_assoc($result)) { 
      printf ("<tr><td>%s</td>", $myrow['pk']); 

     } 
     ?> 
     </table> 
    </body> 
</html> 

什么我越来越团结是

Text : 
DownLoad Bytes: 110 

任何想法如何摆脱PHP数据。

编辑C#代码:

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine.Experimental.Networking; 

public class FrmPhp : MonoBehaviour { 
    public Text txt; 
    string url = "http://192.100.233.222/abc/Hello.php"; 
    byte[] results; 
    //byte results1 = 0x00; 
    // Use this for initialization 
    void Start() { 
     StartCoroutine(GetText()); 
    } 

    IEnumerator GetText() 
    { 
     UnityWebRequest www = UnityWebRequest.Get(url); 
     yield return www.Send(); 

     if(www.isError) { 
      Debug.Log(www.error); 
      txt.text = www.error; 
     } 
     else { 
      // Show results as text 
      //results1 = 0x01; 
      Debug.Log(www.downloadHandler.text); 
      txt.text = www.downloadHandler.text; 
     } 
    } 
    // Update is called once per frame 
    void Update() { 

    } 
} 
+0

为什么downvote .... – vikky

+1

考虑制作api - 使用JSON响应? –

+0

不知道为什么,但+1。该代码不应该编译,因为'Debug.Log(“Text:”www.text);''和'Debug.Log(“DownLoad Bytes:”www.bytesDownloaded.ToString());'在之前缺少'+'符号'www'.Please有可编译的代码问问题。 – Programmer

回答

1

嗨,vikky,

1)我不是很有经验的C#,但我会做什么来帮助C#开发人员是送他的数据以适当的格式。例如XML或JSON,而不是表格。

,所以我想尝试一下本作JSON:

<?php 
$db = pg_connect('host=localhost dbname=MyDB user=postgres password=xyz'); 
$query = "SELECT pk FROM Table1"; 
$result = pg_query($query); 
//printf ("<tr><td>%s</td>", $result); 
if (!$result) { 
    echo "Problem with query " . $query . "<br/>"; 
    echo pg_last_error(); 
    exit(); 
} 
$return_arr = array(); 
while($myrow = pg_fetch_assoc($result)) { 
    array_push($return_arr, $myrow); 
} 
echo json_encode($return_arr); 

2)如果你坚持有一个表使用正确的HTML表格 代替printf ("<tr><td>%s</td>", $myrow['pk']);

3使用printf ("<tr><td>%s</td></tr>", $myrow['pk']); )使用xml你可能try something like this

4)你可以直接连接到你的Postgre数据库使用从C#远程连接(如果这是一个选项)沿lin this

希望帮助

PS的ES。 Decoding JSON in C#也可能派上用场