zoukankan      html  css  js  c++  java
  • Socket使用SOAP调用WCF

    使用Socket调用WCF服务,就是要完全构造出服务调用的消息报文,服务使用的是BasicHttpBinding作为通信方式,那么就是http消息报文了,下面模拟消息报文

    新建一个txt文本文档:request.txt,编写如下内容

    POST /operation HTTP/1.1
    Content-Type: text/xml; charset=utf-8
    SOAPAction: "urlns://little.org/operation/Add"
    Host: localhost:8082
    Content-Length: 148
    Expect: 100-continue
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><Add xmlns="urlns://little.org"><a>3</a><b>5</b></Add></s:Body></s:Envelope>

    然后就是将这段报文发送出去,http协议是应用层协议,是基于网络层的tcp协议的,所以使用socket实现

     1         public static void SocketConnect()
     2         {
     3 
     4             int port = 8081;
     5             string host = "127.0.0.1";
     6             IPAddress ip = IPAddress.Parse (host);
     7             IPEndPoint endpoint = new IPEndPoint (ip, port);
     8             Socket socket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
     9             socket.Connect (endpoint);
    10             FileStream fs = new FileStream ("request.txt", FileMode.Open);
    11             StreamReader sr = new StreamReader (fs);
    12             string sendMsg = sr.ReadToEnd ();
    13             //string sendMsg = "Hello,Server";
    14             //System.ServiceModel.BasicHttpBinding
    15             byte[] sendBuf = Encoding.UTF8.GetBytes (sendMsg);
    16             socket.Send (sendBuf, sendBuf.Length, 0);
    17             byte[] buf = new byte[4096];
    18             socket.Receive (buf, buf.Length, 0);
    19             string msg = Encoding.UTF8.GetString (buf);
    20             Console.WriteLine ("接收到来自服务器的信息...");
    21             Console.WriteLine (msg);
    22             socket.Close ();
    23             //socket.Shutdown(SocketShutdown.Send)
    24         }

    调用后返回结果报文:

    HTTP/1.1 200 OK
    Content-Length: 172
    Content-Type: text/xml; charset=utf-8
    Server: Microsoft-HTTPAPI/2.0
    Date: Mon, 09 Feb 2015 15:41:24 GMT
    
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><AddResp
    onse xmlns="urlns://little.org"><AddResult>8</AddResult></AddResponse></s:Body><
    /s:Envelope>
  • 相关阅读:
    将B表中符合条件的数据更新到A表中
    oracle : 无法更新 ON 子句中引用的列
    查看Oracle 版本信息
    将分组的其他内容以字符串形式展示
    将datatable 保存为 Excel文件(高效率版本)
    winform 中一个窗口嵌套到另一个窗口
    一个切换bool属性的小方法
    html5相关知识点的总结(有一些错误或者不足的地方)
    get和post的区别
    cookie的作用
  • 原文地址:https://www.cnblogs.com/yayaxxww/p/4282764.html
Copyright © 2011-2022 走看看