我有一个接受复杂类型的WCF服务并返回一些数据.我想使用Fiddler来查看对服务的传入请求是什么样的.客户端是.net控制台应用程序,它使用服务引用代理.这与Fiddler有关吗?我是这个工具的新手,并且过去只使用它来使用请求构建器发布数据.
我正在使用HttpClient向我无法访问的web api服务之一发送请求,我需要跟踪从我的客户端到服务器的实际请求流.有没有办法可以连接小提琴手听取请求?
我使用System.Net.Http.HttpClient类发送请求.
更新:现在试图改善这个问题,因为我无法得到我想要的东西.我正在使用.Net客户端应用程序连接到我自己的IIS上通过HTTP通道托管的Web服务.我之前使用在我的IIS上托管的网站进行了小提琴调试,并观察了我的浏览器和WebSite之间产生的流量.但是,当看到.Net客户端程序使用HttpClient类与Web服务进行通信时产生的流量时,奇怪的是,小提琴手似乎无法利用该流量并且不会显示任何内容..Net HttpClient是否绕过WinInet API连接到服务,导致小提琴手无法观看流量?
我正在尝试使用ImageShack API上传图像.要使用它,我应该POST使用图像multipart/form-data.我这样做...
var postData = "";
var req = HttpWebRequest.Create("http://www.imageshack.us/upload_api.php");
req.Method = "POST";
req.ContentType = "multipart/form-data";
postData += "key=my_key_here&";
postData += "type=base64&";
// get base64 data from image
byte[] bytes = File.ReadAllBytes(@"D:\tmp\WpfApplication1\WpfApplication1\Images\Icon128.gif");
string encoded = Convert.ToBase64String(bytes);
postData += "fileupload=" + encoded;
byte[] reqData = Encoding.UTF8.GetBytes(postData);
using (Stream dataStream = req.GetRequestStream())
{
dataStream.Write(reqData, 0, reqData.Length);
}
var res = (HttpWebResponse)req.GetResponse();
var resStream = res.GetResponseStream();
var reader = new StreamReader(resStream);
string resString = reader.ReadToEnd();
txt1.Text = resString;
Run Code Online (Sandbox Code Playgroud)
但ImageShack抱怨说 …
我知道有很多问题/答案,关于此的博客,而不是谈论Telerik的FAQ.我仍然无法找到这个被诊断出来并以明确的方式解决的问题:
语境:
我有一个Web API应用程序,我有一个(单元测试)客户端,它使用HttpClient向API发送请求.Web API应用程序在http:// localhost:8631中侦听/ 有时我使用Fiddler来查看正在发生的事情.
问题:
Fiddler没有捕获我的HttpClient和Web API之间的流量.启动Fiddler流量后仍然可以,但Fiddler中没有显示.
到目前为止的诊断:
结论: 至少我的情况:它不是关于HttpClient被明确配置为使用Fiddler作为代理.它是关于HttpClient和/或Fiddler的localhost行为.
再次发行:
有人可能会问:问题解决了,那么问题是什么?好...
Q1:这仍然是一个痛苦的问题,因为url是在某处编码或配置的(我的意思是http:// localhost:8631/ 或 http:// localhost .fiddler:8631所以fiddler的每次启动和停止都必须更新.更多:检查源代码到源代码控制,并由队友检查其他机器可能会导致问题.所以:这有什么不那么痛苦的解决方法吗?
硬编码我的机器名称(也可以工作)会导致在团队中工作和使用源代码控制时出现同样的痛苦和问题
Q2:为什么这种不一致的行为:纯http:// localhost:8631 /可以在任何浏览器上运行,但不能从HttpClient运行.
我认为回答Q2可以让我们更接近更有用的解决方法.
代码展示
// Using the following url w o r k s regardless of any proxy setting
// ...but it is a pain to hardcode or configure …Run Code Online (Sandbox Code Playgroud)