You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.0KB

  1. #include "testcurl.h"
  2. #pragma GCC diagnostic ignored "-Wunused-function"
  3. testcurl::testcurl( wxWindow* parent )
  4. :
  5. testcurlGUI( parent )
  6. {
  7. texte_URL->SetFocus ();
  8. texte_URL->SetSelection (-1, -1);
  9. curlhandle = curl_easy_init ();
  10. curl_easy_setopt (curlhandle, CURLOPT_WRITEFUNCTION, WriteDataCallback);
  11. curl_easy_setopt (curlhandle, CURLOPT_WRITEDATA, (void*)&curldata);
  12. }
  13. testcurl::~testcurl()
  14. {
  15. curl_easy_cleanup (curlhandle);
  16. curl_global_cleanup ();
  17. }
  18. void testcurl::OnGo( wxCommandEvent& event )
  19. {
  20. if (texte_URL->IsEmpty())
  21. wxMessageBox("URL vide", "Erreur", wxOK|wxICON_EXCLAMATION);
  22. else
  23. {
  24. texte_Resultat->SetValue("");
  25. wxString url = texte_URL->GetValue();
  26. curl_easy_setopt (curlhandle, CURLOPT_URL, _C(url));
  27. printf ("url = %s\n", _C(url));
  28. if (checkbox_Proxy->IsChecked())
  29. {
  30. wxString proxy = texte_Proxy->GetValue();
  31. curl_easy_setopt (curlhandle, CURLOPT_PROXY, _C(proxy));
  32. curl_easy_setopt (curlhandle, CURLOPT_PROXYPORT, spin_Proxy->GetValue());
  33. printf ("proxy = %s:%i\n", _C(proxy), spin_Proxy->GetValue());
  34. }
  35. else
  36. curl_easy_setopt (curlhandle, CURLOPT_PROXY, "");
  37. curldata.content = (char*) malloc(1);
  38. curldata.size = 0;
  39. if (curlhandle)
  40. curl_easy_perform(curlhandle);
  41. printf ("Content = %s", curldata.content);
  42. wxString content = wxString::From8BitData(curldata.content);
  43. texte_Resultat->SetValue(content);
  44. wxMessageBox("Fini !", "Fini !", wxOK);
  45. if (curldata.content)
  46. free (curldata.content);
  47. }
  48. }
  49. static size_t WriteDataCallback(void *contents, size_t size, size_t nmemb, void *userp)
  50. {
  51. size_t realsize = size * nmemb;
  52. CurlData *mem = (CurlData *)userp;
  53. mem->content = (char*) realloc(mem->content, mem->size + realsize + 1);
  54. if (mem->content == NULL) {
  55. // out of memory!
  56. printf("not enough memory (realloc returned NULL)\n");
  57. exit(EXIT_FAILURE);
  58. }
  59. memcpy(&(mem->content[mem->size]), contents, realsize);
  60. mem->size += realsize;
  61. mem->content[mem->size] = 0;
  62. return realsize;
  63. }