Как опубликовать SOAP-запрос от .NET?

Простыми словами, order() дает расположение элементов увеличивающейся величины.

Например, order(c(10,20,30)) даст 1,2,3, а order(c(30,20,10)) даст 3,2,1.

30
задан bkaid 27 July 2011 в 22:11
поделиться

6 ответов

var uri = new Uri("http://localhost/SOAP/SOAPSMS.asmx/add");

var req = (HttpWebRequest) WebRequest.CreateDefault(uri); 
req.ContentType = "text/xml; charset=utf-8"; 
req.Method = "POST"; 
req.Accept = "text/xml"; 
req.Headers.Add("SOAPAction", "http://localhost/SOAP/SOAPSMS.asmx/add"); 

var strSoapMessage = @"<?xml version='1.0' encoding='utf-8'?>
<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' 
               xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
               xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
  <soap:Body><add xmlns='http://tempuri.org/'><a>23</a><b>5</b></soap:Body>
</soap:Envelope>"; 

using (var stream = new StreamWriter(req.GetRequestStream(), Encoding.UTF8)) 
    stream.Write(strSoapMessage); 
19
ответ дан Drew Noakes 27 July 2011 в 22:11
поделиться
  • 1
    У меня был свой RecyclerView в ConstraintLayout, таким образом, это не называло методов адаптера. Сумасшедший: x – Saraz 19 October 2016 в 14:50

Это не нормальный путь. Обычно Вы использовали бы WCF или более старую ссылку веб-сервиса стиля для генерации клиента прокси для Вас.

Однако то, что необходимо сделать обычно, является использованием HttpWebRequest, чтобы соединиться с URL и затем отправить XML в теле запроса.

3
ответ дан Lou Franco 27 July 2011 в 22:11
поделиться
  • 1
    Этот ответ заслуживает большего количества голосов. Я ВСЕГДА забываю это. – Can Poyrazoğlu 3 June 2016 в 10:46

Я сделал что-то вроде этого, создав запрос xml вручную и затем с помощью объекта webrequest отправить запрос:

string data = "the xml document to submit";
string url = "the webservice url";
string response = "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/x-www-form-urlencoded";
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);
response = responsereader.ReadToEnd();

строковые переменные в начале кода - то, что Вы устанавливаете, тогда Вы получаете строковый ответ (надо надеяться...) с сервера.

5
ответ дан Malachi 27 July 2011 в 22:11
поделиться
  • 1
    Может кто-то выручать меня с этот один. I' ve эта подобная проблема, но никакие решения, кажется, работают на меня – Pulak 30 May 2017 в 14:33

Я задаюсь вопросом, как XML сгенерирован, и действительно ли это - действительное сообщение SOAP? Можно отправить его через HTTP, как предложили люди выше.

, Если Вы хотите протестировать, если это собирается работать, можно дать SoapUI попытка (для тестирования, которое я имею в виду).

2
ответ дан yclian 27 July 2011 в 22:11
поделиться
  • 1
    То же здесь, я забываю это все время, и затем я ищу то, что я couldve, сделанный неправильно и затем, я заканчиваю здесь lol. – Ruben2112 12 July 2016 в 14:08

Необходимо отправить данные по HTTP. Используйте класс WebRequest для регистрации данных. Необходимо будет отправить другие данные с запросом сообщения, чтобы гарантировать, чтобы у Вас был допустимый конверт SOAP. Читайте спецификация SOAP для всех деталей.

0
ответ дан Brian Lyttle 27 July 2011 в 22:11
поделиться
  • 1
    Можно также установить это через XML: app:layoutManager =" androidx.recyclerview.widget. LinearLayoutManager" – Westy92 9 August 2018 в 16:28

Вот другой пример - этот в VB:

    Dim manualWebClient As New System.Net.WebClient()

    manualWebClient.Headers.Add("Content-Type", "application/soap+xml;  charset=utf-8")

    ' Note: don't put the <?xml... tag in--otherwise it will blow up with a 500 internal error message!
    Dim bytArguments As Byte() = System.Text.Encoding.ASCII.GetBytes( _
        "<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"">" & System.Environment.NewLine & _
        "  <soap12:Body>" & System.Environment.NewLine & _
        "    <Multiply xmlns=""http://cptr446.class/"">" & System.Environment.NewLine & _
        "      <x>5</x>" & System.Environment.NewLine & _
        "      <y>4</y>" & System.Environment.NewLine & _
        "    </Multiply>" & System.Environment.NewLine & _
        "  </soap12:Body>" & System.Environment.NewLine & _
        "</soap12:Envelope>")
    Dim bytRetData As Byte() = manualWebClient.UploadData("http://localhost/CPTR446.asmx", "POST", bytArguments)

    MessageBox.Show(System.Text.Encoding.ASCII.GetString(bytRetData))
2
ответ дан jeffspost 27 July 2011 в 22:11
поделиться
  • 1
    вопрос, почему это необходимо? Этот ответ решает мою проблему, но меня don' t знают почему. – Ben 31 August 2016 в 22:34
Другие вопросы по тегам:

Похожие вопросы: