【问题标题】:tcpmon Java Axis2 client web service response being redirectedtcpmon Java Axis2 客户端 Web 服务响应被重定向
【发布时间】:2011-12-03 15:46:36
【问题描述】:

我在 Windows7 上使用 Eclipse Indigo 生成 Axis2(Axis 1.6.1 JDK 合规性 1.5)java 存根,并成功调用了http://www.xmlme.com/WSShakespeare.asmx?WSDL 的公共 Web 服务 对所述服务的 getSpeech 方法得到了完美的响应。然后我使用 tcpmon(插件)来查看正在交换的 xml。添加了监听端口 = 4556、目标主机名 = www.xmlme.com 和目标端口 = 80 这会生成 HTTP 302 Moved 错误。回顾一下,当使用

调用时可以正常工作
ShakespeareSoapProxy ssp = new ShakespeareSoapProxy("http://www.xmlme.com:80/WSShakespeare.asmx?WSDL");

但在添加和调用 tcpmon 监听器时失败

ShakespeareSoapProxy ssp = new ShakespeareSoapProxy("http://localhost:4556/WSShakespeare.asmx?WSDL"); 

tcpmon soap 请求

POST /WSShakespeare.asmx?WSDL HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: www.xmlme.com:4556
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "http://xmlme.com/WebServices/GetSpeech"
Content-Length: 359

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><GetSpeech xmlns="http://xmlme.com/WebServices"><Request>To be, or not to be</Request></GetSpeech></soapenv:Body></soapenv:Envelope>
---------tcpmon response below----------------------------
HTTP/1.0 302 Moved
Location: http://172.16.1.6:15871/cgi-bin/blockpage.cgi?ws-session=1096295497
Pragma: no-cache
Cache-Control: no-cache

为什么 tcpmon 会像上面那样失败是我的主要问题。为什么当 SOAP 客户端运行良好时我要 tcpmon?因为我用它生成了一个 jar,它在 Windows7 上运行良好。但是当我在我的 iSeries aka AS400 服务器上运行相同的 jar 时,它给了我 Axis 错误 HTTP 401 未经授权和需要身份验证的消息。我们的 IT 人员确实运行 websense 来阻止内容,但这是我之前运行过 .NET Web 服务的 Windows 客户端上的 localhost。 非常感谢您的想法和回复,谢谢。

编辑 - Windows 发送和服务器不发送的 NTLM 默认凭据的一些研究点?如果是这样的话,有人想发表评论吗?

【问题讨论】:

    标签: java soap axis2


    【解决方案1】:

    您被重定向到 (172.16.1.6) 的 IP 是您网络的本地 IP(请参阅 "Reserved IP addresses"。)请咨询您的网络管理员是否阻止您对 www.xmlme.com 的请求以及原因。

    在我看来问题应该在没有 tcpmon 的情况下重现。您可以使用网络嗅探器(例如Wireshark)来比较使用和不使用 tcpmon 的流量。

    【讨论】:

    • Eli - 谢谢!我不能投票给你,因为我没有足够的声誉哈哈。可悲的是,直接从Win7(端口80)调用它没有问题,效果很好!引入 tcpmon 和端口 4556 会导致问题。同样令人困惑的是,即使直接调用也可以在 Win7 中工作,并且在服务器(非 Windows AS400 / iSeries)上因 HTTP 401 未经授权而失败。 Windows 发送和服务器不发送的 NTLM 默认凭据的一些研究点?如果是这样的话,有人想发表评论吗?
    • 很高兴为您提供帮助(尽管显然我错了,正如您所说的 tcpmon does 有所作为:-))。恕我直言,嗅探器可以帮助您查看成功请求和失败请求之间的区别。我建议您将新信息(关于 NTLM 等)添加到问题的正文中 - 这将提高您获得答案的机会。
    • 感谢 Eli,我将为 NTLM 编辑帖子,我还将尝试检查此 wireshark,tcpmon 无法拦截,也许会!
    猜你喜欢
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多