我有一个c#“客户端”和一个Java“服务器”。 java服务器有一个wsdl,它服务于客户端。 到目前为止,它适用于c#请求服务器执行soap操作。我的服务器获取soap请求执行方法并尝试将结果返回给客户端。
当我将响应发送到c#时,我得到“服务器提交了协议违规.Section = ResponseStatusLine”。
我花了一整天的时间来试图解决这个问题并提出任何有效的方法。如果我解释我做了什么,这篇文章会很长,所以我会保持简短。
我用Google搜索了几个小时,一切都告诉我我的“响应行”是正确的。我试图关闭Skype,重新安排响应行,添加内容,取消内容等等。一切都无济于事。
这是一个课程作业所以没有,我不能用apis来帮忙。我必须在服务器端手动完成所有操作。这意味着手动解析,手动创建soap响应和http响应。在你说使用能为我做的事情之前,你只是想知道你想知道它。
我甚至尝试通过创建一个“模仿”c#one的java客户端来确保我的服务器发送了正确的头文件,这样我就能看到服务器返回的内容。然而,它正在返回我告诉它发送的内容。
我试着告诉我的java客户端做同样的事情,但是对于一个正在运行的c#服务,看看真正的服务返回什么,它返回基本相同的东西。为了安全起见,我复制了它的响应,并尝试将其发送到c#客户端,它仍然抛出了错误。
有人可以帮忙吗?我已经尝试了所有我能想到的,包括将useUnsafeHeaderParsing添加到我的应用配置中。什么都没有工作。我发送的确是真正的服务发送它并且它对我大喊大叫。我把它发送给我想要的东西然后大喊大叫。
我发送的信息:
"200 OK HTTP/1.0\r\n" +
"Content-Length: 201\r\n" +
"Cache-Control: private\r\n" +
"Content-Type: text/xml; charset=utf-8\r\n\r\n";
答案 0 :(得分:4)
您的错误原因是您的状态行语法错误。根据RFC,状态行语法是:
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
你的响应状态行的部分方向错误...就像错误消息告诉你的那样!
一些建议:
不要尝试在此级别谈论HTTP或SOAP。这些协议很复杂,并且存在执行良好的良好文档库,可以执行此类操作。使用它们,不要浪费你的时间重新发明轮子。
如果您确实希望/需要自己实现这些内容,那么您必须阅读并理解相关规范是至关重要的。使用Google很容易找到它们。
(我不打算提供链接,因为这只会鼓励你浪费时间来建造相当于带方轮的马车的软件。因为你需要学习查找和使用他们自己......理所当然。)