Как отправить запрос SOAP в службу WCF? - PullRequest
0 голосов
/ 29 октября 2009

Может кто-нибудь указать мне пример, как отправить SOAP Запрос в WCF Сервис и вернуть SOAP-ответ? По сути, клиент Travel отправляет запрос SOAP с параметрами поиска и проверками службы WCF в базе данных, а затем отправляет соответствующие праздники.

Я получаю эту ошибку, используя метод, который я использовал: «Удаленный сервер возвратил ошибку: (400) Неверный запрос»

Ответы [ 4 ]

1 голос
/ 29 октября 2009

Вы получили ошибку, потому что сервер не понимает HTTP-запрос. Это может быть настроенная вами привязка или неверный прокси службы на уровне клиента.

Или определенная вами служба ожидает HTTP GET, а не HTTP POST. Иногда ссылка на службу добавления может не генерировать правильный HTTP-глагол для некоторых операций [WebGet]. Возможно, вам придется добавить [WebGet] для операции на стороне клиента вручную.

0 голосов
/ 29 октября 2009

спасибо, что нашли время, чтобы ответить на это. Служба работает нормально, если клиент создает ссылку на мою службу WCF и выполняет вызов метода, отправляется соответствующий ответ.

Я забыл добавить, что мой клиент отправляет HTTP Post Request в мою службу WCF. Соответствующий ответ затем создается и возвращается клиенту.

Я могу прочитать HTTP-запрос, однако, когда я пытаюсь получить доступ к HTTP-ответу, я получаю сообщение об ошибке - "Удаленный сервер возвратил ошибку: (400) Неверный запрос"

Ошибка происходит, когда код достигает этой строки:

        // Get the response. 
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;

См. Код ниже:

 private void CreateMessage()
    {
        // Create a request using a URL that can receive a post. 
        WebRequest request = WebRequest.Create("http://www.XXXX.com/Feeds");
        string postData = "<airport>Heathrow</airport>"; 

// пользовательская функция request.Method = "POST";

        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        request.ContentType = "application/soap+xml; charset=utf-8";
        request.ContentLength = byteArray.Length;

        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();

        // Get the response. 
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;

        // Display the status. 
        HttpContext.Current.Response.Write(((HttpWebResponse)response).StatusDescription);

        // Get the stream containing content returned by the server. 
        dataStream = response.GetResponseStream();

        // Open the stream using a StreamReader for easy access. 
        StreamReader reader = new StreamReader(dataStream);

        // Read the content. 
        string responseFromServer = reader.ReadToEnd();

        // Display the content. 
        HttpContext.Current.Response.Write(responseFromServer);

        // Clean up the streams. 
        reader.Close();
        dataStream.Close();
        response.Close(); 

    }

привет

Коджо

0 голосов
/ 29 октября 2009

Либо посмотрите на SoapUI , либо найдите WcfTestClient глубоко в ваших папках Visual Studio (C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE).

Оба могут подключаться к службе WCF и отправлять / получать сообщения SOAP.

Или создайте свой собственный маленький клиент, используя svcutil.exe:

svcutil.exe  (service URL)

создаст для вас небольшой файл * .cs и файл * .config, который вы затем сможете использовать для вызова службы.

Марк

0 голосов
/ 29 октября 2009

Вы не дали много подробностей о том, как далеко вы продвинулись с сервисом, поэтому трудно сказать.

Если это буквально первое попадание в службу, эта ошибка может возникнуть, если WCF не был правильно зарегистрирован в IIS.В частности, расширение .svc должно быть сопоставлено с модулем ASP.NET ISAPI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...