为什么从浏览器调用时 MySQL 结果正常,但从 C# 调用时为空或 NULL



我正在尝试从我的 C# Windows 应用程序向我的网站发出 Web 请求,但是,当仅从 C# 调用而不是从按预期工作的网站调用时,所需的结果为空或 null。

在我执行请求之前,我需要从一个按预期工作并且确实返回正确值的login request开始。

重要编辑:

我尝试将我的PHP代码复制粘贴到我的login.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);
        }
    }
}

发现问题,是人为错误。

我让文件dbconnect.php位于myProblem.php所在的目录下方的一个目录。

我不得不改变台词说

include_once 'dbconnect.php';

include_once '../dbconnect.php'; 

相关内容

  • 没有找到相关文章

最新更新