我部署了一个WebService在机子上,因为特殊的原因,我不能向通常情况那样在客户端添加一个WEB引用去访问WebService,而是必须要建立一个SOCKET去访问,也就是将发送的信息,按照HTTP协议那样封装,发到Webservice。
但是现在的问题是,我第一个包不能是HTTP协议的包,而是发送一个字符串(因为这个通讯要通过一个设备,必须发送这个字符串去验证),而只要我发了这样一个字符串之后再发送HTTP协议的包,Webservice都收不到了,如果我不发这个字符串的话,都是可以收到的,不知道有没有对HTTP协议比较熟悉的朋友,指点一下这是什么原因,有什么办法能够解决呢!!!!!非常感谢!!!
但是现在的问题是,我第一个包不能是HTTP协议的包,而是发送一个字符串(因为这个通讯要通过一个设备,必须发送这个字符串去验证),而只要我发了这样一个字符串之后再发送HTTP协议的包,Webservice都收不到了,如果我不发这个字符串的话,都是可以收到的,不知道有没有对HTTP协议比较熟悉的朋友,指点一下这是什么原因,有什么办法能够解决呢!!!!!非常感谢!!!
解决方案 »
- C# Pop3如何自动接收邮件
- C#程序出异常选择调试能看到源码?
- 很久以前看过一帖,用.net3.5做的一个winform程序,可以动态修改另外一个窗体的属性,如颜色字体等,谁知道那个连接(在线等)
- Main中的treeView1的TreeNode由另外一个Form1中的textBox1输入
- 加急问题: Web控件 TreeView 的问题?(在线等!!!!)
- C# Winform生成另一个exe的实现原理?[在线等]
- 在线求助,datagrid控件
- 以当前时间为种子生成四位随机数如何写?我这样为何错?
- 专业的程序员来解答一下我的问题,谢谢
- C# 托盘程序激活问题
- C#错误?
- 链接Oracle求助
另外就是编码问题,我现在发送中文就出现乱码,不知道怎么回事
首先假设有如下的Web Service方法定义(DemoService.asmx):
[ScriptService]
public class DemoService : System.Web.Services.WebService
{
[WebMethod]
public string DemoMethod()
{
return "Hello World";
}
}
var request = DemoService.DemoMethod(onComplete);
<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
<soap:Body>
<Register xmlns=""http://tempuri.org/"">
<id>123</id>
<data1>" + "phonenumber," + "12312312321测试" + @"</data1>
</Register>
</soap:Body>
</soap:Envelope>"; string httpHeader1 = @"POST /WebServiceTest/WebServiceTest.asmx HTTP/1.1
SOAPAction: ""http://tempuri.org/Register""
Content-Type: text/xml;charset=""utf-8""
Accept: text/xml
Host: 192.168.1.118:80
Content-Length: " + soap1.Length +
@"
Expect: 100-continue
Connection: Keep-Alive";try
{
if (this._socket == null)
{
this._socket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_socket.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.118"), 80));
BeginReceiving();_socket.Send(Encoding.UTF8.GetBytes(httpHeader1 + soap1));
}
}
catch (Exception ex)
{ }