我正在尝试调用Marketo SOAP Web服务 通过ASP.NET / C#。 我成功添加了Web服务引用,并试图用这行代码调用它:
SuccessGetLead lead = service.getLead(paramsgetlead);
问题是我也遇到了这个例外:
[WebException:服务器提交了协议违规。 Section = ResponseStatusLine]
System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)+263
System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)+4
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object [] parameters)+172
com.marketo.soap.MktMktowsApiService.getLead(ParamsGetLead paramsGetLead)位于c:\ Users \ hubert.grininger \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ dynaweb2007 \ 82e21235 \ d41bf12a \ App_WebReferences.liqikruc.7。 CS:206
d:\ workspace_c \ dynaweb2007_test \ marketo.aspx.cs中的_test_marketo.Page_Load(Object sender,EventArgs e):48
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)+14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+35
System.Web.UI.Control.OnLoad(EventArgs e)+99
System.Web.UI.Control.LoadRecursive()+50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+627
我也尝试添加
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing = "true" />
</settings>
</system.net>
但这也没有帮助。
我认为请求永远不会发送到 Marketo ,但错误已经发生在我的最后。
感谢您提供任何帮助或提示。
答案 0 :(得分:4)
解决。问题是wsdl(由Marketo提供)错误地将localhost指向webservice端点。 我通过WebServiceObject.Url属性以编程方式设置URL,现在可以正常工作。
答案 1 :(得分:3)
尝试使用HTTP / 1.0而不是HTTP / 1.1
查看以下代码
objWebRequest.ProtocolVersion = System.Net.HttpVersion.Version10;
它对我有用; - )