Как мне преобразовать этот запрос Ajax Post в C # - PullRequest
0 голосов
/ 30 января 2019

Я делаю проект на c #, чтобы получить идентификатор Facebook с любого URL-адреса Facebook.Я могу помочь API, но код использует этот код POST Ajax:

        // get facebook id
    $('#get-facebook-id').submit(function(event) {

        $('#answer').html("<b>Working for you...</b>");

        $.ajax({
            type: 'POST',
            url: 'https://codeofaninja.com/tools/get-facebook-id-answer.php',
            data: $(this).serialize()
        })
        .done(function(data){
            $('#answer').html(data);
            $('#page_url_tb').val('')
        })
        .fail(function() {
            alert( "Posting failed. Please try again." );
        });

        return false;
    });

Я пытаюсь создать свой собственный код, но выдает ошибку.Мой код и моя ошибка ниже.

private string getFbAccountID(string facebookurl)
    {
        var request = (HttpWebRequest)WebRequest.Create("https://codeofaninja.com/tools/get-facebook-id-answer.php");

        var postData = "page_url="+facebookurl;
        var data = Encoding.ASCII.GetBytes(postData);

        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = data.Length;

        using (var stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }

        var response = (HttpWebResponse)request.GetResponse();

        var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
        return responseString;
    }

Ошибка:

    <br />
<b>Notice</b>:  Undefined index: page_url in <b>/home/100661.cloudwaysapps.com/rpxdhcedbx/public_html/tools/get-facebook-id-answer.php</b> on line <b>3</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/home/100661.cloudwaysapps.com/rpxdhcedbx/public_html/tools/get-facebook-id-answer.php</b> on line <b>19</b><br />
<p>There was an error. Please try a different input.</p>

Это всегда дает мне эту ошибку.Я надеюсь, что кто-то может мне помочь

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Здесь у вас есть альтернатива, использующая System.Net.WebClient, она сделает ваш код более компактным:

private string getFbAccountID(string facebookurl)
{
    using (var webClient = new System.Net.WebClient())
    {
        var formValues = new System.Collections.Specialized.NameValueCollection
        {
            { "page_url", facebookurl }
        };

        var responseBytes = webClient.UploadValues(
            "https://codeofaninja.com/tools/get-facebook-id-answer.php",
            formValues
            );

        return System.Text.Encoding.UTF8.GetString(responseBytes);
    }
}
0 голосов
/ 30 января 2019

Я так понимаю, вы работаете над этим упражнением .:)

Но чтобы ответить на ваш вопрос, вы не кодируете URL facebookurl.

Если вы используете один из примеров URL-адресов Facebook на их странице и наблюдаете за сетевым трафиком, используяИнструменты разработчика в браузере (F12), вы увидите это как отправку данных формы: page_url=https%3A%2F%2Fwww.facebook.com%2Fpages%2FAndrew-Garfield%2F166865773328160

jQuery's serialize() делает это за вас.

В C # вы можете использовать WebUtility.UrlEncode:

var postData = "page_url=" + WebUtility.UrlEncode(facebookurl);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...