Ich versuche, eine Webanforderung von meiner C# Windows-Anwendung auf meiner Website, , aber das gewünschte Ergebnis ist leer oder null, wenn nur von C# aufgerufen, aber nicht von der Website, wo es wie erwartet funktioniert.Warum ist MySQL OK, wenn es vom Browser aufgerufen wird, aber leer oder NULL, wenn es von C# aufgerufen wird?
Bevor ich meine Anfrage mache, muss ich mit einer login request
beginnen, die wie erwartet funktioniert und tatsächlich den richtigen Wert zurückgibt.
WICHTIG EDIT:
Ich versuchte, meinen PHP
Code in meine login.php
Datei zu Copypaste und es funktioniert in C# und gibt den richtigen Count-Wert.
Ist meine HttpClient
nicht richtig konfiguriert vielleicht?
Mein PHP
Test-Code sieht wie folgt:
<?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;
?>
Und mein C#
sieht wie folgt aus:
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);
}
}
}
Sie Ihre URL versucht Aufruf haben sagen zu ändern 'http: // www.mywebsite.com /' von Fiddler oder PostMan zu sehen, ob Sie bekommen Ergebnisse? – CodingYoshi
@CodingYoshi Entschuldigung für die Verschwendung Ihrer Zeit. Ich habe das Problem gefunden. – vaid
Keine Sorgen. Ich prüfe immer Sachen mit Fiddler oder einem ähnlichen Werkzeug, bevor ich eine einzelne Codezeile für diese Art von Ding schreibe. Sobald ich weiß, dass dieser Teil funktioniert, schreibe ich den Code. Freut mich, dass Sie das Problem gelöst haben. – CodingYoshi