2017-06-26 7 views
1

PHPサーバーに変数を送るはじめユニティC#は

私は私が間違っているところを仕事に苦労しています、私は団結でデータをポストする方法について説明しthisユニティの回答(C#)を読んだ後、私はthisを読みますphpのget/post/requestを使ってデータを受け取る方法を説明しているウェブサイト。今度は、の値をhelloとして投稿し、PHPサーバコードで受け取ってログに記録して、これが正しく起こったかどうかを確認するために、このコードを思いついた。

C#(ユニティ)

using UnityEngine; 
using System.Collections; 

public class CommunicateWithServer : MonoBehaviour 
{ 

    void Start() 
    { 
     string url = "http://www.purelogicgames.com/index.php"; 
     WWWForm form = new WWWForm(); 
     form.AddField("var1", "hello"); 
     WWW www = new WWW(url, form); 
     StartCoroutine(WaitForRequest(www)); 
    } 

    IEnumerator WaitForRequest(WWW www) 
    { 
     yield return www; 

     // check for errors 
     if (www.error == null) 
     { 
      Debug.Log("WWW Ok!: " + www.data); 
     } 
     else 
     { 
      Debug.Log("WWW Error: " + www.error); 
     } 
    } 
} 

Serverコード(NetBeans IDEを使用してPHP)

<!DOCTYPE html> 
<!-- 
To change this license header, choose License Headers in Project Properties. 
To change this template file, choose Tools | Templates 
and open the template in the editor. 
--> 
<?php 
    if($_REQUEST["var1"]) 
    { 
     echo "Recieved ". $_REQUEST["var1"]. " success!"; 
     exit(); 
    } 
    else 
    { 
     echo "Request Failed"; 
    } 
?> 

<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title></title> 
    </head> 
    <body> 
     <?php 
     echo '<p>Hello World?</p>'; 
     echo $_REQUEST["var1"]. " Success?"; 
     ?> 
    </body> 
</html> 

私はエディタで統一コードを実行するとなおさら私が失敗した結果を得ますウェブページを開いたときに

Unity Editor

enter image description here

Webページ

enter image description here

NetBeans IDEに(それが重要かどうかわからない)

enter image description here

ターあなたはこれを読んでくれています。私は単純な解決策があると思っています。PHP統一コミュニケーションについての無数の質問やその他のページを見てきましたが、それでも見つからなかったので、これは別の質問簡略化されているので、他の人にとって有益な例となります。質問をしてもらえたらうれしいことに私の質問に答えてください。これをいくつかの文脈で言えば、これはPHPを正しく使用して初めてのことです(私のコードではまだhello worldがあります)。そして、C#を統一して使用していました。ありがとう。

+1

PHPがどのように動作するのかわからないが、ASP.NETで何をしているのかは分かりません。PHPで送信されたデータを魔法のように保存していない限り(私はそれが起こっているとは限りません)、ページに移動すると全く新しい要求になり、POSTデータを持たないので常にエラーになります –

+0

あなたのブラウザでそれを確認するには、アドレスに "?var1 = hello"を追加してください – Tamar

+0

なぜ私はHTMLコード –

答えて

1

それが必要として、PHPは物事を処理していることを確認するために、これを行います。

<?php 
if (isset($_REQUEST["var1"])) { 
    echo "Received ". $_REQUEST["var1"]. " success!"; 
    exit(); 
} else { 
    http_status_code(400); 
    echo "Request Failed"; 
} 

は(私はあなたがそれを必要とは思わない)他のすべてを削除します。

http://www.purelogicgames.com/index.phpの検証のために、が「OK testvalue successful!」という結果になるのに対して、400エラーと「要求失敗」をエコーする必要があります。

この場合、PHPコードは必要な処理を行っています。

C#コードは正常に動作しているようですが、ログは受信した応答を切り捨てているようです(上記のように応答がはるかに短い場合は修正されます)。

+0

私は記述されたようにPHPコードを変更したと私は私のブラウザにhttp://www.purelogicgames.com/index.php?var1=testvalueを置くとき私は '受信testvalue成功!しかし私がhttp://www.purelogicgames.com/index.phpを置くとき、何も得られないので、 '要求は失敗しました'。しかしこれにもかかわらず、私はC#ユニティコードの変数を入力してエコーを介して出力することはできません。また、C#のウェブリンクを変更しても変更はありません。うまくいけば、私とは違ってこれを理解することができます。 –

+0

@g_lあなたのページを見ると、まだ ''が表示されています。これは、あなたがすでにレスポンスボディを送り始めているので、 'http_status_code'を使用できないことを意味します。他のすべてのテキスト(doctypeも含む)を削除して、ここにあるものだけを残してください。 – apokryfos

+0

ありがとう、私はそれがNetbeansの一部であると推測した –