走到这步走不动了 代码如下 求大神解答
public ERPResulModel AAA(string ServerPage, string workflowCode, string userCode, bool finishStart, rec[] list)
{
string postData = "workflowCode=" + workflowCode + "userCode=" + userCode + "finishStart=" + finishStart+ "paramValues="+list;
byte[] dataArray = Encoding.Default.GetBytes(postData);
//创建请求
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ServerPage);
request.Method = "POST";
request.ContentLength = dataArray.Length;
request.ContentType = "application/x-www-form-urlencoded";
//创建输入流
Stream dataStream = null;
try
{
dataStream = request.GetRequestStream();
}
catch (Exception)
{
return null;//连接服务器失败
}
//发送请求
dataStream.Write(dataArray, 0, dataArray.Length);
dataStream.Close();
//读取返回消息
ERPResulModel resultModel = "";
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
resultModel = reader.ReadToEnd();
reader.Close();
}
catch (Exception ex)
{
return null;//连接服务器失败
}
return resultModel;
}
}
返回啥错误
直接完事了 但是接口没有执行 就连接服务器失败
{"操作超时"}
@素雅淡生丶: 超时连接断掉了,建议拿http请求工具先测一下地址的访问是否成功
@面具灬: dataStream.Write(dataArray, 0, dataArray.Length); 这句话调试的时候点开有2个错误
Length = '((System.Net.ConnectStream)dataStream).Length' threw an exception of type 'System.NotSupportedException'
Position = '((System.Net.ConnectStream)dataStream).Position' threw an exception of type 'System.NotSupportedException'
看看ex报的内容
操作超时
{"操作超时"}
@素雅淡生丶: 你这里是接受数据,其他地方写数据的正确么?比如地址,端口,内容?
@rqx: 请问怎么确定是否正确
@素雅淡生丶: 比较准的办法,装个抓包工具比如wireshark,过滤IP,端口看看是否有数据发过来了,也可以通过代码确认,看看客户端上发送的url地址是否是服务器的,端口是否是正在监听的,网络是否可以连接,防火墙是否放开了,都没问题了,再看看服务器端是否监听了正确的端口,是否有数据包。。。
@rqx: dataStream.Write(dataArray, 0, dataArray.Length); 这句话调试的时候点开有2个错误
Length = '((System.Net.ConnectStream)dataStream).Length' threw an exception of type 'System.NotSupportedException'
Position = '((System.Net.ConnectStream)dataStream).Position' threw an exception of type 'System.NotSupportedException'
请求的服务端没有响应呗。等个几十秒等默认超时。或者可以设置request。timeout时间。确认你调用的接口是可用的。使用比如postman之类的工具测试一下先
ServerPage
中的 url 是否正确?
url是正确 的
@素雅淡生丶: 异常被你 catch 掉了,临时改为下面的代码,就可以看到具体的异常信息
try
{
//...
}
catch (Exception ex)
{
throw ex;
return null;
}
@dudu: 提示操作超时
@素雅淡生丶: 那就是连不上服务器,ServerPage 中的 url 通过浏览器可以访问吗?
调用webservice是这么调用的吗? 我是应用服务里用,你直接请求? 又不是webapi
详见本文鄙人回答:https://q.cnblogs.com/q/107032/
动态的时候,这么加无法搞。
@花飘水流兮: 你这排版有点乱,动态调用webservice也有方法的,但不是http这种模式,我之前也写过动态调用,地址传进来就行,不过开发的应用一般不会变地址的
@jqw2009: dataStream.Write(dataArray, 0, dataArray.Length); 这句话调试的时候点开有2个错误
Length = '((System.Net.ConnectStream)dataStream).Length' threw an exception of type 'System.NotSupportedException'
Position = '((System.Net.ConnectStream)dataStream).Position' threw an exception of type 'System.NotSupportedException'
在浏览器中打开这个地址看看能不能访问
先看Rsp.StatusCode作分析。这卡起不代表什么,比如这个过程就是1分钟,那么你就得等一分钟才会跳过这个过程(前提还得网络连接超时设置大于1分钟)。
提示超时的话,要双方协商设置超时时间。通常都没设置的话,默认值是比较大的,这往往是受到网络因素制约。如果网络正常,你可以尝试设置更大超时时间,如果服务器很小的的话,也需要服务器设置。
@花飘水流兮: dataStream.Write(dataArray, 0, dataArray.Length); 这句话调试的时候点开有2个错误
Length = '((System.Net.ConnectStream)dataStream).Length' threw an exception of type 'System.NotSupportedException'
Position = '((System.Net.ConnectStream)dataStream).Position' threw an exception of type 'System.NotSupportedException'
@素雅淡生丶: 网络流不支持Seek的哈。老老实实写肯定没问题的