Недавно я столкнулся с проблемой:

Код C #:

string URI = "http://cannonrush.tk/UpdateLogFile.php";
string myParameters = "text=test123";

using (WebClient wc = new WebClient())
{
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    string HtmlResult = wc.UploadString(URI, myParameters);
    Console.WriteLine(HtmlResult);   
}

Файл PHP:

<?php
if (isset($_GET['text'])) {
    $file = "LogFile.txt";
    $handle = fopen($file, 'a') or die('ERROR: Cannot write to file: ' . $file);
    date_default_timezone_set('Europe/Amsterdam');
    $data = '~ ' . date('l jS \of F Y h:i:s A') . '>> ' . $_GET['text'] . "\n\n";
    fwrite($handle, $data);
    fclose($handle);
    echo "SUCCESS";
} else {
    echo "ERROR: Access forbidden without text";
}
?>

Теперь, когда я запускаю приведенный выше код C #, я получаю вывод:

ОШИБКА: доступ без текста запрещен.

Я пробовал множество версий для публикации данных с C # на php, но, похоже, ничего не работает.

Любые идеи?

0
LetsCode 25 Окт 2014 в 01:01
Я не знаю PHP, но метод UploadString использует POST и помещает строку в тело. Возможно ли, что PHP ожидает GET и ищет строку запроса? stackoverflow.com/questions/5415224/how-to-set -получить-переменная
 – 
Mike_G
25 Окт 2014 в 01:08

2 ответа

Лучший ответ

Измените $ _GET ["text"] на $ _POST ["text"] в файле php или используйте DownloadString () вместо UploadString () в своем коде C #.

0
HaukurHaf 25 Окт 2014 в 01:18

$_GET заполняется только в запросах GET, поэтому UploadString работать не будет:

Загружает указанную строку в указанный ресурс с помощью метода POST.

Если вы хотите разрешить любой из глаголов, используйте вместо него $ _REQUEST.

0
Tieson T. 25 Окт 2014 в 01:20