• 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>
  • 相关阅读:
    C#中的Byte,String,Int,Hex之间的转换函数。
    js继承之原型继承
    node.js module初步理解
    手游热更新方案--Unity3D下的CsToLua技术
    像素迷踪,当Unity的Frame Debugger力不从心时
    Unity内存理解(转)
    Unity5的AssetBundle(二、加载&卸载)
    Sprite Atlas与Sprite Mask详解
    Unity2017新功能Sprite Atlas详解
    Util应用程序框架公共操作类(一):数据类型转换公共操作类(介绍篇)
  • 原文地址:https://www.cnblogs.com/yayaxxww/p/4282764.html
Copyright © 2020-2023  润新知