Avatar billede m_smiszek Nybegynder
13. maj 2008 - 11:20 Der er 13 kommentarer

Soap requests

Hej alle,

Jeg kæmper lidt med at finde ud af hvordan man laver soap requests, fra en aspx til en webservice.

Jeg synes ikke jeg umiddelbart kan finde nogen god dokumentation på dette, måske jeg bare ikke læser de rigtige steder eller også er jeg ikke helt med på ideen.

Nogle der kan sætte mig ind i tingene, evt med en stump kode der viser et mindre eksembel.

Mvh Mikkel
Avatar billede arne_v Ekspert
13. maj 2008 - 15:12 #1
Du laver en web ref til URL for WSDL og saa kalder du den ligesom almindelig kode.

Du skal lige teste at du faar alt med naar du deployer fra udviklings PC til server.
Avatar billede m_smiszek Nybegynder
13. maj 2008 - 15:33 #2
Hej Arne,

Jeg læste et af dine tideligere indlæg, dog uden at forstå hvad du mente.

Har du noget imod at give et eksempel jeg er ikke helt med nemlig.

Mvh Mikkel
Avatar billede arne_v Ekspert
14. maj 2008 - 04:15 #3
du starter VC#
åbner dit projekt
højre klikker op references
vælger add web reference
angive URL på WSDL

(det er i 2005 - 2008 er lidt anderledes)
Avatar billede m_smiszek Nybegynder
14. maj 2008 - 09:41 #4
Hej Arne,

Den er jeg med på, det samme skrev du i et tileligere indlæg.

Jeg er mere i tvil hvorpå man kalder det som almendelig kode, jeg kan ikke få det til at virke.
Avatar billede m_smiszek Nybegynder
14. maj 2008 - 14:35 #5
Altså... Jeg har en webservice der beder om at sende denne soap.

SOAP 1.2
The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /getstatus.asmx HTTP/1.1
Host: localhost
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetNodeStatus xmlns="http://10.10.10.41/GetStatus">
      <NodeName>string</NodeName>
    </GetNodeStatus>
  </soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetNodeStatusResponse xmlns="http://10.10.10.41/GetStatus">
      <GetNodeStatusResult>xml</GetNodeStatusResult>
    </GetNodeStatusResponse>
  </soap12:Body>
</soap12:Envelope>

hvis jeg skriver Node name, og trykker invoke får jeg dette output:

- <Result>
- <Node>
  <NODE_NAME>hemmelig</NODE_NAME>
  <PLATFORM_NAME>WinNT</PLATFORM_NAME>
  <DOMAIN_NAME>server</DOMAIN_NAME>
  <CONTACT />
  <LASTACC_TIME>4/24/2008 11:06:47 AM</LASTACC_TIME>
  <REG_TIME>9/10/2007 1:13:39 PM</REG_TIME>
  <LASTSESS_RECVD>693234748989</LASTSESS_RECVD>
  <LASTSESS_SENT>1333762342392</LASTSESS_SENT>
  <LASTSESS_DURATION>196423</LASTSESS_DURATION>
  <LASTSESS_IDLEWAIT>1.32382342892057026</LASTSESS_IDLEWAIT>
  <LASTSESS_COMMWAIT>93.3299382349002036</LASTSESS_COMMWAIT>
  <LASTSESS_MEDIAWAIT>0</LASTSESS_MEDIAWAIT>
  <URL />
  <TCP_NAME>hemmelig</TCP_NAME>
  <TCP_ADDRESS>172.0.0.1</TCP_ADDRESS>
  <OdbcTransferStamp>4/24/2008 1:00:00 PM</OdbcTransferStamp>
  </Node>


Men jeg fatter ikke at få det trukket ud på en aspx side. Jeg må være små dum, jeg er ved at gå til af idioti.
Avatar billede arne_v Ekspert
14. maj 2008 - 15:13 #6
Hele tricket er at du slet ikke skal bekymre dig om SOAP.

Naar du tilfoejer ref til web service, saa kan du kalde den ligesom en almindelig
metode.

Du kalder med en String og faa noget tilbage (String med XML ??).

.NET soerger for alt med hensyn til SOAP.

Saa du staar med noget XML som du skal have vist paa din side. Og det kan saa
kodes helt normalt.
Avatar billede m_smiszek Nybegynder
14. maj 2008 - 15:21 #7
Okay.

Jeg synes jeg har prøvet på at få det til at virke, kan du give et simplet eksembel, er ved at gå til..
Avatar billede m_smiszek Nybegynder
22. maj 2008 - 09:35 #8
Ingen bud på hvad der kan hjælpe mig igang, synes jeg har prøvet alt.
Avatar billede arne_v Ekspert
24. maj 2008 - 00:32 #9
Jeg kan godt lave et eksempel.

Men det vil næppe hjælpe dig. Jeg er overbevist om at dit problem er forståelsen
af konteksten ikke koden.

Men jeg laver et eksempel.
Avatar billede arne_v Ekspert
24. maj 2008 - 05:58 #10
<%@ WebService Language="C#" Class="E.XmlDemo" %>
using System;
using System.Web.Services;
using System.Xml;

namespace E
{
    public class XmlDemo : WebService
    {
        [WebMethod]
        public XmlDocument Test(string s)
        {
            XmlDocument doc = new XmlDocument();
            XmlNode root = doc.CreateElement("demo");
            XmlNode arg = doc.CreateElement("arg");
            arg.AppendChild(doc.CreateTextNode(s));
            root.AppendChild(arg);
            XmlNode status = doc.CreateElement("status");
            status.AppendChild(doc.CreateTextNode("Det virker !"));
            root.AppendChild(status);
            doc.AppendChild(root);
            return doc;
        }
    }
}
Avatar billede arne_v Ekspert
24. maj 2008 - 05:58 #11
<%@ import namespace="System.Xml" %>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
    XmlDemo serv = new XmlDemo();
    XmlDocument doc = new XmlDocument();
    doc.AppendChild(doc.ImportNode(serv.Test("bla bla"), true));
    Xml1.Document = doc;
}
</script>
<form id="Form1" method="post" runat="server">
<asp:Xml id="Xml1" runat="server"/>
</form>
Avatar billede arne_v Ekspert
01. juni 2008 - 05:56 #12
Nå ?
Avatar billede arne_v Ekspert
29. juni 2008 - 05:29 #13
??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester