HttpWebRequest «POST» возвращает ошибку сервера (исключение) - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь вызвать Google URL shortner API из приложения WP7, сначала я попытался в Консольном приложении , выполнив это:* и он работал нормально, и возвращал все в порядке, но когда я пытаюсь сделать это на приложении для Windows Phone , например:

    private void button1_Click(object sender, RoutedEventArgs e)
    {            
        testConnection();
    }

    private void testConnection()
    {
        if (!NetworkInterface.GetIsNetworkAvailable())
            MessageBox.Show("There's no internet connection, please reconnect to the internet and try again");
        else
        {                
            var req = (HttpWebRequest)WebRequest.Create("https://www.googleapis.com/urlshortener/v1/url");
            req.ContentType = "application/json";
            req.Method = "POST";
            req.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), req);
            textBlock2.Text = "Done";               

        }
    }
    void GetRequestStreamCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
        // End the stream request operation
        Stream postStream = webRequest.EndGetRequestStream(asynchronousResult);

        // Create the post data
        // Demo POST data:
        string postData = "http://www.google.com";
        byte[] byteArray = Encoding.Unicode.GetBytes(postData);

        // Add the post data to the web request            
        postStream.Write(byteArray, 0, byteArray.Length);
        postStream.Close();

        // Start the web request
        webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest);
    }


    void GetResponseCallback(IAsyncResult asynchronousResult)
    {

        try
        {
            HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
            HttpWebResponse response;
            // End the get response operation
            response = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult);
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(streamResponse);
                            textBlock1.Text= streamReader.ReadToEnd();
            streamResponse.Close();
            streamReader.Close();
            response.Close();

        }
        catch (WebException e)
        {

        }
    }

Код всегда идет на уловпопробуйте метод и выдает ошибку «not found».

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Существует известная проблема с SSL и недоверенными сертификатами.Подключение к веб-сайту с SSL, для которого требуются ClientCertificates, не поддерживается в текущей модели приложения Windows Phone 7 (поддерживается только BasicAuthentication)Об этой же проблеме можно прочитать здесь: http://forums.create.msdn.com/forums/p/65076/398730.aspx

0 голосов
/ 30 декабря 2011

У меня была похожая проблема (которая имеет смысл, так как я начал с этого кода в качестве моего примера ...), и когда я изменил следующий код, он начал работать до такой степени, что я мог снова двигаться вперед.

... от:

byte[] byteArray = Encoding.Unicode.GetBytes(postData);

... до (эквивалент):

byte[] byteArray = Encoding.UTF8.GetBytes(postData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...