WebClient.UploadValues не делает запрос на публикацию в c #

0

Я пытаюсь загрузить одно jpeg-изображение в PHP-скрипт. Это мое консольное приложение program.cs:

class Program
{
    static void Main(string[] args)
    {
        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();

        string result = UploadHandler.Post(
            "http://localhost/upload_test",
            "frame.jpg"
        );

        stopWatch.Stop();
        TimeSpan ts = stopWatch.Elapsed;
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);

        Console.WriteLine("Result : {0}", result);
        Console.WriteLine("File uploaded in : {0}", elapsedTime);
        Console.ReadKey();
    }
}

Это мой класс UploadHandler:

class UploadHandler
{
    public static string Post(string serverUrl, string filePath)
    {
        string result = "";
        using (WebClient client = new WebClient())
        {
            byte[] response = client.UploadValues(serverUrl, new NameValueCollection()
            {
                { "frameData", ToBase64(filePath) }
            });
            result = Encoding.Default.GetString(response);
        }
        return result;
    }

    private static string ToBase64(string filePath)
    {
        return Convert.ToBase64String(
            File.ReadAllBytes(filePath)
        );
    }
}

и это мой php-скрипт, который получает загрузку:

<?php

if (count($_POST) && isset($_POST['frameData']))
{
    file_put_contents('frame.jpg', base64_decode($_POST['frameData']));
    exit("OK");
}
else
{
    print_r($_POST);
    exit("INVALID REQUEST");
}

И это ответ, который я получаю:

Изображение 174551

Любая идея, почему это может быть? Похоже, что приложение С# не делает запрос HTTP POST.

  • 0
    Попробуйте посмотреть на ваш запрос с чем-то вроде Fiddler.
  • 0
    Я использовал Wireshark для мониторинга всех HTTP-запросов и провел тест, и я вообще не принимал никаких HTTP-запросов ... что кажется странным, потому что я получаю ответ обратно.
Показать ещё 3 комментария
Теги:

1 ответ

0

Пытаться:

client.UploadValues(serverUrl, "POST", new NameValueCollection()
            {
                { "frameData", ToBase64(filePath) }
            });

EDIT: вы должны отлаживать такие проблемы с помощью Fiddler: http://www.telerik.com/fiddler

Сначала убедитесь, что ваше приложение С# отправляет ожидаемый запрос, проверив его в Fiddler, а затем вы можете убедиться, что ваше приложение PHP работает правильно на другом конце.

Прямо сейчас вы не получите очень далеко, потому что неясно, где проблема.

  • 0
    Все еще не работает. Получение INVALID REQUEST назад.
  • 0
    Я отредактировал свой комментарий, я думаю, что вы должны использовать Fiddler и иметь возможность быстро определить проблему.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню