一个C#代码的报错问题 希望得到各位大佬和老师们管理员们的指正
欸刚开发了一个项目出现错误,进度似乎卡壳了.....所使用语言为C#
版本为5.25.20
所遭遇的问题是,如下:
1>------ 生成 已启动: 项目: 虾皮shopee电商数据采集,配置: Debug|AnyCPU ------
1>C:\Users\Administrator\Desktop\新建文件夹\ResponseFilterEvent.cs(12,40,12,68): error CS0246: 未能找到类型或命名空间名“FBroSharpResponseFilterEvent”(是否缺少 using 指令或程序集引用?)
1>C:\Users\Administrator\Desktop\新建文件夹\ResponseFilterEvent.cs(68,25,68,54): error CS0246: 未能找到类型或命名空间名“FBroSharpResponseFilterStatus”(是否缺少 using 指令或程序集引用?)
1>C:\Users\Administrator\Desktop\新建文件夹\BrowserEvent.cs(92,50,92,75): error CS0115: “BrowserEvent.GetResourceResponseFilter(IFBroSharpBrowser, IFBroSharpFrame, IFBroSharpRequest, IFBroSharpResponse)”: 没有找到适合的方法来重写
========== 生成: 0 成功,1 失败,0 更新,0 跳过 ==========
出现了很大的麻烦和危机,希望有老师们和管理员们可以指正一下我所遭遇的问题
代码报错修复了一晚上也没有修复好,文档内也没有查看到解决办法
感谢各位老师们和管理员们的点评和指教,我会虚心接受你们的建议和方案的,拜托了
using FBroSharp;
using FBroSharp.Callback;
using FBroSharp.DataType;
using FBroSharp.Lib;
using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace 虾皮shopee电商数据采集
{
public class ResponseFilterEvent : FBroSharpResponseFilterEvent
{
private BrowserForm _form;
public string url = "";
private MemoryStream ms = new MemoryStream();
private BinaryWriter writer;
private DateTime startTime;
public ResponseFilterEvent(BrowserForm form)
{
_form = form;
}
/// <summary>
/// 初始化过滤器
/// </summary>
/// <param name="flag">标志参数</param>
/// <returns>是否开始拦截</returns>
public override bool InitFilter(long flag)
{
try
{
Console.WriteLine($"[响应拦截] 初始化过滤器: {url}");
return true; // 返回true开始拦截
}
catch (Exception ex)
{
Console.WriteLine($"[响应拦截] 初始化过滤器失败: {ex.Message}");
return false;
}
}
/// <summary>
/// 开始处理响应数据
/// </summary>
/// <param name="flag">标志参数</param>
public override void Start(long flag)
{
try
{
ms = new MemoryStream();
writer = new BinaryWriter(ms);
startTime = DateTime.Now;
Console.WriteLine($"[响应拦截] 开始拦截响应数据: {url}");
}
catch (Exception ex)
{
Console.WriteLine($"[响应拦截] 开始处理响应失败: {ex.Message}");
}
}
/// <summary>
/// 处理响应数据流
/// </summary>
public override FBroSharpResponseFilterStatus Filter(
long flag,
Stream dataIn,
out long dataInRead,
Stream dataOut,
out long dataOutWritten)
{
dataInRead = 0;
dataOutWritten = 0;
try
{
if (dataIn == null)
{
return FBroSharpResponseFilterStatus.RESPONSE_FILTER_DONE;
}
// 计算可读取的数据量
dataInRead = Math.Min(dataIn.Length, dataOut.Length);
dataOutWritten = dataInRead;
if (dataInRead > 0)
{
var readBytes = new byte;
dataIn.Read(readBytes, 0, (int)dataInRead);
dataOut.Write(readBytes, 0, (int)dataOutWritten);
// 将数据写入内存流保存
if (writer != null)
{
writer.Write(readBytes);
}
// 如果还有更多数据需要读取
if (dataInRead < dataIn.Length)
{
return FBroSharpResponseFilterStatus.RESPONSE_FILTER_NEED_MORE_DATA;
}
}
return FBroSharpResponseFilterStatus.RESPONSE_FILTER_DONE;
}
catch (Exception ex)
{
Console.WriteLine($"[响应拦截] 处理响应数据失败: {ex.Message}");
return FBroSharpResponseFilterStatus.RESPONSE_FILTER_ERROR;
}
}
/// <summary>
/// 完成响应数据处理
/// </summary>
public override void End(long flag)
{
try
{
if (ms == null) return;
byte[] data = ms.ToArray();
var duration = DateTime.Now - startTime;
Console.WriteLine($"[响应拦截] 响应拦截完成: {url}, 数据大小: {data.Length} 字节, 耗时: {duration.TotalMilliseconds}ms");
if (data.Length > 0)
{
// 处理响应数据
ProcessResponseData(data);
}
}
catch (Exception ex)
{
Console.WriteLine($"[响应拦截] 完成响应处理失败: {ex.Message}");
}
finally
{
// 清理资源
CleanupResources();
}
}
/// <summary>
/// 处理响应数据
/// </summary>
private void ProcessResponseData(byte[] data)
{
try
{
string responseText = Encoding.UTF8.GetString(data);
// 保存到文件
string dataDir = Path.Combine(Directory.GetCurrentDirectory(), "data");
if (!Directory.Exists(dataDir))
{
Directory.CreateDirectory(dataDir);
}
string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
string itemId = ExtractItemIdFromUrl(url);
string fileName = $"item_{itemId}_{timestamp}.json";
string filePath = Path.Combine(dataDir, fileName);
File.WriteAllText(filePath, responseText);
// 通知主程序
_form.AddInterceptedRequest(url, (int)data.Length, filePath, responseText);
Console.WriteLine($"[数据保存] {fileName} ({data.Length} 字节)");
}
catch (Exception ex)
{
Console.WriteLine($"[数据处理] 处理响应数据失败: {ex.Message}");
}
}
private string ExtractItemIdFromUrl(string url)
{
try
{
if (url.Contains("item_id="))
{
int start = url.IndexOf("item_id=") + 8;
int end = url.IndexOf('&', start);
if (end == -1) end = url.Length;
return url.Substring(start, end - start);
}
}
catch { }
return "unknown";
}
/// <summary>
/// 清理资源
/// </summary>
private void CleanupResources()
{
try
{
writer?.Dispose();
ms?.Dispose();
writer = null;
ms = null;
}
catch (Exception ex)
{
Console.WriteLine($"[响应拦截] 清理资源失败: {ex.Message}");
}
}
// 覆盖基类的Destroy方法
public override void Destroy()
{
CleanupResources();
}
}
} mosheng 发表于 2026-1-12 00:46
QQ/微信:1098901025,只负责指导可远程答疑,手上单子太多了
谢谢莫生老师,我加您QQ MorenLendan 发表于 2026-1-11 20:35
您好,莫生老师我的c#不会写,我想请您帮我看看,我也是在b站看到您的,关注您时间也挺长了,有偿,一天1 ...
QQ/微信:1098901025,只负责指导可远程答疑,手上单子太多了 mosheng 发表于 2026-1-10 23:45
第一个报错,在顶部加上:using FBroSharp.Event;
第二个报错,在顶部加上:using FBroSharp.Const;
您好,莫生老师我的c#不会写,我想请您帮我看看,我也是在b站看到您的,关注您时间也挺长了,有偿,一天1500,工期一到就给 第一个报错,在顶部加上:using FBroSharp.Event;
第二个报错,在顶部加上:using FBroSharp.Const;
第三个报错,去看继承类FBroSharpBrowserEvent里正确的写法,
这些都是C#里很基础的东西,装个fittencode插件会好一点
页:
[1]