HTTP 模拟请求, 谁帮看看 代码 有什么问题

验证码识别 2010-07-19 03:51:03

public int CaptchaDeal(ref string strCheckCode)
{
try
{
CLog.WriteLog("CaptchaDeal start");
string url = "http://*****"; //获取一个图片

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "GET";
request.Accept = "*/*";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();

int nStatus = response.StatusCode.GetHashCode();

int streamLength = 1024 * 1024;
byte[] fileData = new byte[streamLength];

int nLenth = 0;
int offset = 0;

nLenth = responseStream.Read(fileData, 0, streamLength);
while (nLenth > 0)
{
offset += nLenth;
nLenth = responseStream.Read(fileData, offset, streamLength - offset);
}

byte[] buf = new byte[offset];
Array.Copy(fileData, 0, buf, 0, offset);

responseStream.Close();

response.Close();

strCheckCode = "ABCEDF";

return 0;
}
catch
{
return 2;
}

}


问题:
----------------------------------------------------
当执行上面函数后, 再执行另外一个相似函数, 会抛异常

当执行上面函数后, sleep下,再执行另外一个相似函数, 不会抛异常

直接执行另外一个相似函数, 不会抛异常
------------------------------------------------------

我感觉就是上面代码有问题, 谁帮我看看




...全文
106 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
捷哥1999 2010-07-19
  • 打赏
  • 举报
回复
能否提供异常的信息?应该就是写日志那里有问题。
thoughter 2010-07-19
  • 打赏
  • 举报
回复
catch(Exception ex)
{
CLog.WriteLog(ex.ToString());
}
看看到底是什么错呢………………
wxd024 2010-07-19
  • 打赏
  • 举报
回复
我刚才测试一下,没有抱错。我不知道你的函数有多相似,我改变了URL
wxd024 2010-07-19
  • 打赏
  • 举报
回复
顶一下
验证码识别 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sq_zhuyi 的回复:]
response和responseStream的声明放在try外边,在catch中判断是否为null,不为null就关闭
[/Quote]

谢谢

不过这样的结果还是一样的, 我是想知道产生这种问题的原因
验证码识别 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 computerfox 的回复:]
分析用的调试代码在哪里?
[/Quote]

当执行上面函数后, 再执行另外一个相似函数, 会抛异常 //CLog.WriteLog("RegPost end 3");

当执行上面函数后, sleep下,再执行另外一个相似函数, 不会抛异常//CLog.WriteLog("RegPost end 2");


直接执行另外一个相似函数, 不会抛异常//CLog.WriteLog("RegPost end 2");




路人乙e 2010-07-19
  • 打赏
  • 举报
回复
response和responseStream的声明放在try外边,在catch中判断是否为null,不为null就关闭
捷哥1999 2010-07-19
  • 打赏
  • 举报
回复
分析用的调试代码在哪里?
验证码识别 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sandy945 的回复:]
CLog.WriteLog("CaptchaDeal start");

这句
[/Quote]

这个没问题的,是我发现问题后来加了分析用的
调试状态不出问题
验证码识别 2010-07-19
  • 打赏
  • 举报
回复

//返回 0 成功注册 1 帐户错误 2 网络不通 3 验证码错误 4登陆次数过多
public int RegPost(ref TAccountInfo tAccountInfo)
{

CLog.WriteLog("RegPost start");

string url = "http://***";

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("Accept-Language", "zh-CN");

request.ServicePoint.Expect100Continue = false;
request.CookieContainer = m_cookieContainer;

//填充要post的内容
string strPostData = "***";

byte[] bytesToPost = Encoding.ASCII.GetBytes(strPostData);
request.ContentLength = bytesToPost.Length;
//request.AllowAutoRedirect = false;

Stream requestStream = null;

try
{
requestStream = request.GetRequestStream();
requestStream.Write(bytesToPost, 0, bytesToPost.Length);
}
catch
{
if (requestStream != null)
{
requestStream.Dispose();
}
request.Abort();

CLog.WriteLog("RegPost end 1");

return 2;
}

requestStream.Close();

int nStatus = 0;

try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

nStatus = response.StatusCode.GetHashCode();

Stream responseStream = response.GetResponseStream();

StreamReader readStream = new StreamReader(responseStream, System.Text.Encoding.UTF8);
string page = readStream.ReadToEnd();
response.Close();

CLog.WriteLog("RegPost end 2");

//如果登陆失败,分析原因
//分析结果
if (IsYZMWrong(ref page))
{
return 3;// 验证码错误
}
else if (IsLoginSuccess(ref page))//成功
{
return 0;
}
else
{
return 1;// 帐户密码错误
}
}
catch
{
CLog.WriteLog("RegPost end 3");

request.Abort();
return 2;
}
}


贴了, 另外调试情况下也没有问题
Ny-6000 2010-07-19
  • 打赏
  • 举报
回复
资源访问冲突.

进程假死了. /
阿非 2010-07-19
  • 打赏
  • 举报
回复
CLog.WriteLog("CaptchaDeal start");

这句
捷哥1999 2010-07-19
  • 打赏
  • 举报
回复
当执行上面函数后, 再执行另外一个相似函数, 会抛异常

当执行上面函数后, sleep下,再执行另外一个相似函数, 不会抛异常

直接执行另外一个相似函数, 不会抛异常


看样子应该是资源访问冲突了,你说的另外一个相似函数贴出来看看吧
验证码识别 2010-07-19
  • 打赏
  • 举报
回复
顶个,谁帮看看有什么资源泄露没有
yxaaalyq 2010-07-19
  • 打赏
  • 举报
回复
没遇到过!

110,534

社区成员

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

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

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