0

データベース内のデータに対して検証を実行するように要求するC#ために Web ページ ( ) を呼び出す必要があるアプリケーションを構築しています。PHPデータは、PHPの HTTP パラメータを介してページに提供されますURL

PHP Web ページへの呼び出しから単一の応答値を取得したいと考えています。この特定の例では、Boolean値のみが必要です。ただし、何かを要求する方法、おそらく 1 つの要求で複数の値を要求する方法を学ぶことは賢明なようです (それが可能であれば)。

これは、呼び出しを行っている PHP ページの簡易バージョンです。

<?php
    $type = $_GET['type'];
    $accessid = $_GET['accessid'];
    $license = $_GET['license'];
    $machine = $_GET['machine'];
    $osver = $_GET['osver'];
    $ip = getenv("REMOTE_ADDR");

    $query = "select * from validatetable where licnum = '" . $license . "'";
    if ($result = db_doquery($query))
    {
        if (db_dofetcharray($result))
        {
            $query = "update validatetable set lastdate = CURRENT_TIMESTAMP, lastmachine = '" . $machine . "', accessip = '" .  $ip . "', osver = '" . $osver . "' where type = '" . $type . "' and licnum = '" . $license . "'";
            db_doquery($query);
        }
        else
        {
            $query = "insert into validatetable set type = '" . $type . "', name = '<unknown>', licnum = '" . $license . "', accessid = '" . $accessid . "', lastdate = CURRENT_TIMESTAMP, machine = '" . $machine . "', accessip = '" .  $ip . "', osver = '" . $osver . "'";
            db_doquery($query);
        }
    }
?>

このPHPページは単に値を受け取り、データベース テーブルにレコードを挿入または更新しています。これは続きますが、別のテーブルから情報を抽出し、提供されたものと比較して、検証インジケーターを として返しBooleanます。

そして、これは C# アプリケーションの現在のリクエスト コードです。

String webUrl = String.Format("http://www.mywebsite.com/validate.php?type=type&accessid={0}&license={1}&machine={2}&osver={3}.{4}", accessID, licNum, clientMachineName, Environment.OSVersion.Version.Major, Environment.OSVersion.Version.Minor);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(webUrl);
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
    using (Stream dataStream = response.GetResponseStream())
    {
        using (StreamReader reader = new StreamReader(dataStream, Encoding.UTF8))
        {
            String theResponse = reader.ReadToEnd();  //<--- THIS LINE
        }
    }
}
response.Close();

上記の行により、返されるページの完全な HTML を含む変数が生成されます。

私が知りたいのは、これらのうちの 1 つまたは複数として応答を返す方法です (可能な限り):

  1. 単一の値
  2. 値のコレクション
  3. 確実に値を抽出できるもの
4

4 に答える 4

0

完全な html オブジェクトが返されるので、いつでも私と同じように、特定のタグにパラメーターを設定できます (私は「データ」と呼んでいますが、好きなように呼び出すことができます!) PHP でできること:

send('this string should be returned with data tags');
function send(dat) {
  echo '<data>'. $dat .'</data>'
}

次に、C# でタグを削除します。

public string removeDataTags(string fullhtml) {
  string rmt = fullhtml.Substring(fullhtml.IndexOf("<data>") + ("<data>").Length);
  rmt = rmt.Substring(0, rmt.IndexOf("</data>"));
  return rmt;
}

あなたが今しなければならないのは、持っているだけです:

theResponse = removeDataTags(theResponse);

送信されたデータは theResponse 文字列で利用できます。

于 2013-09-23T15:18:06.343 に答える