Post方式提交数据信息到jsp处理报错?

夜魔009 2012-11-18 09:10:10
最近开发系统silverlight4+tomcat后端。也就是前端是.net,后端是Java。
get方式调用jsp都没有问题,就是post方式调用jsp,总是报NotFoun异常。请问是什么问题?跨域访问绝对没问题,因为Url以get方式都能正常访问。还请知道的指点一下。同样的程序和服务器,8台电脑,只有1台能正常调用。其它机器新装操作系统,安装silverlight runtime后也不能正常访问。能正常访问的机器,不管是调试,还是部署模式,都能正常访问。怀疑是有什么特殊问题,难道是缺什么库吗?
具体信息如下:
post调用类
public class HttpClientPost
{
private string postData;
SynchronizationContext currentContext;

SendOrPostCallback sopc;

public void PostData(string url, string data, SynchronizationContext _currentContext, SendOrPostCallback _sopc)
{
currentContext = _currentContext;
Uri endpoint = new Uri(url);
sopc = _sopc;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endpoint);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";

postData = data;
request.BeginGetRequestStream(new AsyncCallback(RequestReadySocket), request);
}

private void RequestReadySocket(IAsyncResult asyncResult)
{
WebRequest request = asyncResult.AsyncState as WebRequest;
Stream requestStream = request.EndGetRequestStream(asyncResult);

//using (StreamWriter writer = new StreamWriter(requestStream))
//{
// writer.Write(postData);
// writer.Flush();
//}
byte[] bytearray=Encoding.UTF8.GetBytes(postData);
requestStream.Write(bytearray, 0, bytearray.Length);
requestStream.Close();
requestStream.Dispose();
request.BeginGetResponse(new AsyncCallback(ResponseReadySocket), request);
}

private void ResponseReadySocket(IAsyncResult asyncResult)
{
try
{
WebRequest request = asyncResult.AsyncState as WebRequest;
WebResponse response = request.EndGetResponse(asyncResult);
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream);
string paramStr = reader.ReadToEnd();
currentContext.Post(sopc, paramStr);
}
}
catch (Exception e)
{
Debug.WriteLine("HttpClientPost " + e.Message + "\n" + e.StackTrace);
}
}
}

}

////////////////////////////////////////////////////////////////////////////
//异常内容
System.Net.WebException
Message=远程服务器返回了错误: NotFound。
StackTrace:
位于 System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
位于 System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
位于 HttpClientPost.ResponseReadySocket(IAsyncResult asyncResult)
位于 System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassd.<InvokeGetResponseCallback>b__b(Object state2)
位于 System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
位于 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
位于 System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
位于 System.Threading.ThreadPoolWorkQueue.Dispatch()
位于 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
InnerException: System.Net.WebException
Message=远程服务器返回了错误: NotFound。
StackTrace:
位于 System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
位于 System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
位于 System.Net.Browser.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState)
InnerException:






还请知道如何解决的回个帖谢谢。get方式请求都一切正常的。


...全文
273 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜魔009 2012-11-19
  • 打赏
  • 举报
回复
问题解决了。经过细致追查,发现是IE版本问题,最后发现IE6能正常调用,再追查发现是其中哟数据转换在IE9发生了变化。修改silverlight发送端的数据后,问题解决。漫长啊~~~
夜魔009 2012-11-18
  • 打赏
  • 举报
回复
因为get方式拼装的字符串url有40K,根本无法正常传递参数到JSP页面。所以采用POST
Architecture Net 2012-11-18
  • 打赏
  • 举报
回复
这种情况很难判断是什么原因导致的。为什么不用get方式呢?

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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