2013-03-18 31 views
2

У меня есть приложение ASP.net, которое позволяет пользователям сообщать об ошибках и прикреплять файлы. Ошибка в сочетании с деталями и вложениями должна быть сохранена в FogBugz. Мне удалось создать все, кроме части прикрепления файла.Как подключить файлы через приложение ASP.net к FogBugz с C#

вот мой код:

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», но это не помогло. На самом деле я понятия не имею, что такое File 1, File 2 и как отправить их в FogBugz.

Может ли кто-нибудь помочь мне с этим? Большое спасибо!

ответ

0

Файл1 должен быть указан в теле вашего сообщения multipart/form-data (а не как параметр querystring).

Вы действительно должны указать все байты в файле.

Существует ответ на 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 примере.

+0

Пока ваша ссылка и образец хороши и полезны, ваш пост кажется немного выключенным. –

+0

Crappy comments system ;-) Пока ваша ссылка и образец хороши и полезны, ваш пост кажется немного выключенным. Ваша запись формы определяет кодировку «base64»; то вы также должны использовать его ниже. В этом случае данные будут: c2xma2FqZGZsa3NqZmxhamZkag0Kc2xkZmpzZDthbGpmZHMNCnRoZXNlIGFyZSBhY3R1YWwgZGF0YSBieXRlcyBmcm9tIHRoZSBmb28uanBnIGZpbGUNCnNsZmtqZHNmbGpkcw0Kc2RmbGFqc2Rmcw == Это говорит у меня возникли проблемы с FogBugz игнорируя флаг base64 и обрабатывать все в двоичном виде. Может быть, я плохой ;-) –