2017-04-08 1 views
2

C#Windowsアプリケーションから自分のウェブサイト にWebリクエストをしようとしていますが、C#からのみ呼び出されたときに空白またはnullが返されます。ブラウザから呼び出されたときにMySQLが正常になるのはなぜですか?しかし、C#から呼び出されると空またはNULLになりますか?

私が私の要求をする前に、私はlogin requestで始まる必要があります。これは期待どおりに動作し、本当に正しい値を返します。

重要EDIT:

私はlogin.phpファイルへの私のPHPコードをコピー - ペーストしようとしましたが、それはC#で作業を行い、正しいカウント値を返します。

HttpClientは正しく設定されていませんか?


マイPHPテストコードは以下のようになります。

<?php 
    session_start(); 
    if(!isset($_SESSION['user'])){ header("Location: index.php"); } 

    include_once 'dbconnect.php'; //contains $db 

    $sql = "SELECT * FROM myTable"; //contains two rows 
    $sql_res = mysqli_query($db, $sql); 
    $proxyCount = mysqli_num_rows($sql_res); 
    $echo "Count: ".$proxyCount; 
?> 

そして、私のC#は、次のようになります

using System; 
using System.Collections.Generic; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

using System.IO; 
using System.Net.Http; 

using ModernHttpClient; 
using Newtonsoft.Json; 


namespace WindowsFormsApp1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     public void log(string str) 
     { 
      logbox.AppendText(str + Environment.NewLine); 
     } 

     private string host = "http://www.mywebsite.com/"; 
     private HttpClient httpClient = new HttpClient(new NativeMessageHandler()); 
     private async Task<string> request(string target, Dictionary<string, string> _parameters) 
     { 
      string uri = host + target; 

      using (HttpResponseMessage response = await httpClient.PostAsync(uri, new FormUrlEncodedContent(_parameters))) 
       return new StreamReader(await response.Content.ReadAsStreamAsync()).ReadToEnd(); 

     } 

     private async void button1_Click(object sender, EventArgs e) 
     { 

      string loginResp = await request("login.php", new Dictionary<string, string> { { "username", "user" }, { "password", "password" } }); 
      log(loginResp); 



     } 

     private async void button2_Click(object sender, EventArgs e) 
     { 
      string proxiesResp = await request("proxy/proxy.php", new Dictionary<string, string> { { "getAllProxyRequests", "" } }); 
      //above returns "count: " in C#, but returns "count: 2" in webbrowser 
      log(proxiesResp); 
     } 
    } 
} 
+1

include_once 'dbconnect.php'; 

を言って行を変更しなければならなかったあなたは 'HTTP URLを呼び出してみました:かどうかを確認するためにバイオリンや郵便配達員から// www.mywebsite.com /'あなたは結果を得ますか? – CodingYoshi

+0

@コーディングYoshiあなたの時間を無駄にして申し訳ありません。私は問題を発見した。 – vaid

+1

心配はいりません。私はこの種のもののためのコードの一行を書く前に、常にFiddlerまたは同様のツールで物をテストします。その部分が動作することを知ったら、コードを書きます。あなたが問題を解決してうれしい。 – CodingYoshi

答えて

1

それがヒューマンエラーだった、問題を発見しました。

ファイルdbconnect.phpは、myProblem.phpの下の1つのディレクトリにあります。

私は

include_once '../dbconnect.php'; 
関連する問題