Прочитайте значения XML-файла и отправьте в веб-сервис с SOAP - PullRequest
3 голосов
/ 09 февраля 2012

Я новичок в веб-службах. Я создал новый веб-сайт в Visual Web Developer 2010 Express, добавил ссылку на службу на страницу сайта .asmx и дал ей пространство имен BBImportLead.

Конечным результатом будет загрузка нескольких клиентов в один файл XML из нашей базы данных PICK / Universe, получение строки InnerText для каждого тега (FName, LName и т. Д.) Из файла xml через ASP.NET, отправка строк через SOAP для веб-службы и отображение результатов для пользователя (пока в метке, но в будущем, возможно, будут предприняты действия в зависимости от результата, такие как удаление XML-файла, если он был успешно отправлен).

Я пробовал следовать различным примерам, используя VB и C #, но я не получаю его работу. Похоже, я смог очень близко подойти к этому примеру с VB: http://www.asp.net/web-forms/videos/building-35-applications/an-introduction-to-soap-based-web-services-with-visual-web-developer-2008

Это мой код Default.aspx.vb. Моя цель - отобразить строковый ответ от веб-службы в метке, которую я создал.

    Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        Dim BBImportLeadService As New BBImportLead.BBCallDataSoapClient

        Dim doc As New System.Xml.XmlDocument
        doc.Load("bborder.xml")

        Dim AuthenHead = doc.GetElementsByTagName("AuthenHead")
        Dim FName = doc.GetElementsByTagName("FName").ToString
        Dim LName = doc.GetElementsByTagName("LName").ToString



        Label1.Text = BBImportLeadService.ImportLead(AuthenHead:=AuthenHead, FName:=FName, LName:=LName)


    End Sub
End Class

Ошибка, которую я получаю, связана с переменной AuthenHead, поскольку она не является строкой. Это значение tns, но я не уверен, как использовать doc.GetElementsByTagName и преобразовать его в то, что запрашивает служба?

Ошибка 1 Значение типа 'System.Xml.XmlNodeList' не может быть преобразовано в 'BBImportLead.AuthenHead'

Кто-нибудь может указать мне правильное направление? Как исправить эту ошибку tns, и если она выглядит так, как будто она должна работать?


UPDATE: Я нашел этот новый кусок кода для моей попытки C #. Будет ли это работать лучше? Кажется, что-то отправляет и получает ответ, но у меня нет имени пользователя и пароля, чтобы веб-служба получала их ответ. И я также не вижу, где вызывать определенную функцию на их веб-сервисе для моих xml-данных.

string data = "bborder.xml";
        string url = "urltakenoutforexample";
        string servresponse = "the response from the server";

        // build request objects to pass the data/xml to the server
        byte[] buffer = Encoding.ASCII.GetBytes(data);
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "POST";
        request.ContentType = "application/soap+xml";
        request.ContentLength = buffer.Length;
        Stream post = request.GetRequestStream();

        // post data and close connection
        post.Write(buffer, 0, buffer.Length);
        post.Close();

        // build response object
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;
        Stream responsedata = response.GetResponseStream();
        StreamReader responsereader = new StreamReader(responsedata);
        servresponse = responsereader.ReadToEnd();

        lbNodes.Items.Add(servresponse);

1 Ответ

0 голосов
/ 10 февраля 2012

Прежде всего, я настоятельно рекомендую не использовать веб-сайт «Проект». Это хорошо только для простых сайтов. Если вы используете веб-сервисы, то я не называю ваш сайт "простым".

Во-вторых, вам вообще не следует использовать службы ASMX. Это устаревшая технология, которая не должна использоваться для новых разработок. Вы должны использовать WCF для всех новых разработок.

Я оставил комментарий к http://asp.net,, попросив их снять это старое видео. Он отправил вас не по тому пути.

...