HttpWebRequest提交对方网站,有的页面成功,有的不成功。几天了,一直没搞定,请高手帮忙解决,非常感谢!

vickyyu 2010-04-22 12:32:41
因项目需要,需要采用HttpWebRequest将相关内容自动提交到对方系统
下面是我的提交方式
采用这种方式大部分页面是可以正常提交的,但是有几个页面总是会出错(其实也就是跳转到了他们的一个错误页),我获取的不是正常情况下应该获取的数据,而是他们的错误页的数据。
出错的几个页面,IE6是可以正常访问的
下面是代码:

Encoding enc = System.Text.Encoding.GetEncoding("GB2312");
string sAction = "http://10.223.111.45/pms/exchange/save.so";
string sData = "readMark=null&eqType=01&appNo=101003941794&equipCateg=01&equipId=2010000001460677&assetNo=43410010000005268&chkGroup=&chkGroupName=&checkerNo=&checkerNoName=&chkDate=&chkConcCode=1&chkContent=";

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sAction);
req.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
req.Headers["Accept-Encoding"] = "gzip, deflate";
req.Headers["Accept-Language"] = "zh-cn";
req.Headers["Cache-Control"] = "no-cache";
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
req.Referer = "http://10.223.111.45/pms/exchange/save.so";
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.CookieContainer = new CookieContainer();
req.CookieContainer.Add(this.LoginCookie);//把前面登陆后获取的COOKIE加进来

byte[] PostData = System.Text.Encoding.ASCII.GetBytes(sData);

req.ContentLength = PostData.Length;
Stream tempStream = req.GetRequestStream();
tempStream.Write(PostData, 0, PostData.Length);
tempStream.Close();

HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), enc);
string sHtml = sr.ReadToEnd();
sr.Close();
res.Close();
...全文
305 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
特别安静 2010-04-22
  • 打赏
  • 举报
回复
vickyyu 2010-04-22
  • 打赏
  • 举报
回复
谢谢大家,问题已经解决
因为http://10.223.111.45/pms/exchange/save.so这个页面需要使用前面某个页面产生的SESSION
在POST前走一下前面的页面就OK了,获取了SESSION就可以了
lanfengsese 2010-04-22
  • 打赏
  • 举报
回复
upup
vickyyu 2010-04-22
  • 打赏
  • 举报
回复
前面发的错误信息是我用程序POST后,他们服务器返回的信息
使用IE请求他们系统是正常的
vickyyu 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 net_lover 的回复:]
你自己先用html表单提交看是否正常,注意是POST方式不是 GET方式进行测试。对方的页面出错,是对方的问题。
[/Quote]

通过IE使用他们的系统是正常的
showlin 2010-04-22
  • 打赏
  • 举报
回复
java异常。。。
检查一下你post的data吧,估计有问题
孟子E章 2010-04-22
  • 打赏
  • 举报
回复
你自己先用html表单提交看是否正常,注意是POST方式不是 GET方式进行测试。对方的页面出错,是对方的问题。
vickyyu 2010-04-22
  • 打赏
  • 举报
回复
这是他们的异常信息

org.sotower.uep.exception.InvalidExecutionException: 错误的目标,args = org.sotower.webc.context.WebContext@4b7b72d7,,methodName = save,instance = com.cepri.pms.am.detectcalibratverif.webc.impl.DintuitiveTestFormImpl@740ea466; nested exception is java.lang.reflect.InvocationTargetException
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.sotower.uep.impl.SimpleExecutionObjectImpl.execute(SimpleExecutionObjectImpl.java:227)
at org.sotower.presentation.engine.support.AnalysisService.getReturnValue(AnalysisService.java:92)
at org.sotower.presentation.engine.WebEngine.doEngine(WebEngine.java:173)
at org.sotower.presentation.engine.WebEngine.handleRequestInternal(WebEngine.java:106)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:819)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:754)
at org.sotower.presentation.PlatformWebDispatcher.doService(PlatformWebDispatcher.java:66)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:399)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:364)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.workflow.caching.RequestCacheFilter.doFilter(RequestCacheFilter.java:31)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.cepri.pms.framework.monitor.RequestMonitorFilter.doFilter(RequestMonitorFilter.java:39)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.monitor.client.uri.HttpMonitorFilter.doFilter(HttpMonitorFilter.java:56)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.bsp.permit.pep.intercept.web.SecurityEnforcementFilter.doFilter(SecurityEnforcementFilter.java:105)
at org.sotower.bsp.permit.pep.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:50)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.bsp.permit.pep.ui.AbstractIntegrationFilter.doFilter(AbstractIntegrationFilter.java:215)
at org.sotower.bsp.permit.pep.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:50)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:75)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3229)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2002)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1908)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1362)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by: com.cepri.pms.framework.exception.PMException:
at com.cepri.pms.am.detectcalibratverif.webc.impl.DintuitiveTestFormImpl.save(DintuitiveTestFormImpl.java:165)
... 44 more
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.sotower.uep.impl.SimpleExecutionObjectImpl.execute(SimpleExecutionObjectImpl.java:227)
at org.sotower.presentation.engine.support.AnalysisService.getReturnValue(AnalysisService.java:92)
at org.sotower.presentation.engine.WebEngine.doEngine(WebEngine.java:173)
at org.sotower.presentation.engine.WebEngine.handleRequestInternal(WebEngine.java:106)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:819)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:754)
at org.sotower.presentation.PlatformWebDispatcher.doService(PlatformWebDispatcher.java:66)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:399)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:364)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.workflow.caching.RequestCacheFilter.doFilter(RequestCacheFilter.java:31)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.cepri.pms.framework.monitor.RequestMonitorFilter.doFilter(RequestMonitorFilter.java:39)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.monitor.client.uri.HttpMonitorFilter.doFilter(HttpMonitorFilter.java:56)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.bsp.permit.pep.intercept.web.SecurityEnforcementFilter.doFilter(SecurityEnforcementFilter.java:105)
at org.sotower.bsp.permit.pep.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:50)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.bsp.permit.pep.ui.AbstractIntegrationFilter.doFilter(AbstractIntegrationFilter.java:215)
at org.sotower.bsp.permit.pep.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:50)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.sotower.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:75)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3229)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2002)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1908)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1362)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by: com.cepri.pms.framework.exception.PMException:
at com.cepri.pms.am.detectcalibratverif.webc.impl.DintuitiveTestFormImpl.save(DintuitiveTestFormImpl.java:165)
... 44 more
showlin 2010-04-22
  • 打赏
  • 举报
回复
看看返回的错误页的信息,也会有帮助的,比如有的页面要求访问间隔时间30秒以上,否则就报错
chichenzhe 2010-04-22
  • 打赏
  • 举报
回复
你本地代码没有什么问题.IE6能访问就证明了这点.

要看对方 的 堆栈抛出的异常才好找问题.(不能转向到他们的 错误页,这样无法跟踪问题)

只有看到 异常 才能找到问题所在.

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧