3 Stimmen

SOAP Header für Windows Phone

Ich habe ein Problem beim Hinzufügen von Header-Informationen zu einer SOAP-Nachricht. Hat jemand eine Idee, wie man dies auf korrekte Weise tun kann?

Ich kann den Authenticator-Teil erfolgreich hinzufügen, aber ich kann immer noch nicht UserName und Passwort innerhalb des Authenticators wie unten gezeigt hinzufügen. Sie können auch den C#-Code unten sehen!

      string
      string

      string

C# Code

var client = new MySoapClient();
client.GetListCompleted += (a, b) =>
{
    var list = b.Result;
};

using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
{
    MessageHeader header = MessageHeader.CreateHeader("Authenticator", "http://......./", credentials);
    OperationContext.Current.OutgoingMessageHeaders.Add(header);
    client.GetListAsync(App.CouponCampaignCode);
}

public class _ServiceCredential
{
    [XmlAttribute(Form = System.Xml.Schema.XmlSchemaForm.None)]
    [DataMember(Order = 2)]
    public string Password;
    [DataMember(Order = 1)]
    [XmlAttribute(Form = System.Xml.Schema.XmlSchemaForm.None)]
    public string UserName;
}

0voto

Roy Punkte 69
private void callWebservice()
{
    NetworkCredential credentials = new NetworkCredential(userName, Password, domain);
    HttpWebRequest request = CreateWebRequest(url, credentials);
    XDocument soapEnvelope = CreateSoapEnvelope(soapEnvelope );
    InsertSoapEnvelopeIntoWebRequest(soapEnvelope, request);
}

private static HttpWebRequest CreateWebRequest(string url, NetworkCredential credentials)
   {
        string action = link;// Mein Aktionslink
        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
        req.Credentials = credentials;
        req.Headers["SOAPAction"] = action;
        req.ContentType = "text/xml;charset=\"utf-8\"";
        req.Accept = "text/xml";
        req.Method = "POST";
        return req;
    }

private static XDocument CreateSoapEnvelope(string content)
{
    XDocument soapEnvelopeXml = XDocument.Parse(content);
    return soapEnvelopeXml;
}

private static void InsertSoapEnvelopeIntoWebRequest(XDocument soapEnvelopeXml,                          HttpWebRequest webRequest)
{
    webRequest.BeginGetRequestStream((IAsyncResult asynchronousResult) =>
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
        Stream postStream = request.EndGetRequestStream(asynchronousResult);
        soapEnvelopeXml.Save(postStream);
        postStream.Close();

        request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
    }, webRequest);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X