我有一个ASP.net应用程序,允许用户报告错误并附加文件。该错误及其细节和附件应保存在FogBugz中。 我已设法创建除文件附件部分之外的所有内容。
这是我的代码:
private void NewCaseWithFile()
{
string fbUrl = "https://test.fogbugz.com/api.asp";
string fbToken = logInFogBugz();
string param = "";
param += "cmd=new";
param += "&token=" + fbToken;
param += "&sTags=" + "OnlineService,";
param += "&sTitle=" + "Testing";
param += "&sEvent=" + "This case is being created from Visual Studio";
param += "&nFileCount=" + "1";
param += "&File1=" + "Picture.png";
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(fbUrl + "?" + param);
httpWebRequest.Method = WebRequestMethods.Http.Post;
httpWebRequest.ContentType = "multipart/form-data";
httpWebRequest.Accept = "application/xml";
httpWebRequest.ContentLength = 0;
HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
XDocument doc = XDocument.Load(streamReader);
}
我已经尝试了“Editing Cases”下的所有说明,但它没有帮助。事实上,我不知道文件1,文件2是什么以及如何将它们发送到FogBugz。
任何人都可以帮我吗? 非常感谢!
答案 0 :(得分:0)
应在multipart / form-data帖子的正文中指定File1(而不是查询字符串参数)。
您实际上必须指定文件中的所有字节。
fogbugz.stackexchange.com以及C# FogBugz API wrapper都有答案可以为您处理所有部分。
帖子正文中的表单部分看起来像
--sdfjdsjsdflk SOME BOUNDARY--
Content-Disposition: form-data; name="File1"; filename="foo.jpg"
Content-Transfer-Encoding: base64
Content-Type: image/png
slfkajdflksjflajfdj
sldfjsd;aljfds
these are actual data bytes from the foo.jpg file
slfkjdsfljds
sdflajsdfs
或者您可以通过示例查看this question which points to an RFC。