גלעד, השמיע קול...

גלעד, השמיע קול...

זוכר שדיברנו על תוכנית ב-VC שמביאה קוד HTTP דרך פרוקסי. אתה שלחת לי קוד דוגמא לפני כשבועיים. ובכן רק עכשיו היתה לי הזדמנות לנסות אותו, ולרוע המזל אני לא מצליח להפעיל אותו, מתקבלת השגיאה הבאה:
HTTP 407 Proxy Authentication Required - The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied. (12209)<BR>Internet Security and Acceleration Server​
צירפתי בקובץ טקסט את הקוד בו אני משתמש כדי לנסות להביא את ה-HTTP. הקוד הזה מורץ כתגובה ללחיצה על כפתור ב-GUI. הקוד פשוט ככל האפשר, ואין לי שום טיפול בשגיאות, אוסיף אותו יותר מאוחר כשהקוד יפעל. ד"א: יש לי IE5 שמוגדר לפעול דרך הפרוקסי, והוא עושה זאת ללא בעיה. האם יש לך איזו עיצה? תודה גיליוטין
 

gilad_no

New member
יש עצה ../images/Emo6.gif

תעבור שוב על הקוד ששלחתי לך. כאשר אתה מתחבר לשרת פרוקסי, הוא מחזיר קוד שגיאה 407. בשלב הזה, אתה צריך להפעיל את חלון ההזדהות (על מנת להכניס שם משתמש וסיסמה) ולשלוח שוב את הבקשה.
 
אה... תזכיר לי איך מפעילים חלון ..

הזדהות, ייתכן שלא זיהיתי את זה בקוד.
 

gilad_no

New member
חלון

if (pFile->ErrorDlg(NULL, ERROR_INTERNET_INCORRECT_PASSWORD,FLAGS_ERROR_UI_FLAGS_GENERATE_DATA|FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS, NULL)==ERROR_INTERNET_FORCE_RETRY) { pFile->SendRequest(); pFile->QueryInfoStatusCode(dwRetCode); }​
 
אוף.... עדיין לא מצליח להתחבר...

הוספתי את השורות לעיל, ואכן נפתח לי חלון המבקש את השם והסיסמה. אני מכניס וכלום לא קורה, הוא חוזר על בקשת השם והסיסמה, כאילו לא מצליח להתחבר עם הנתונים שהכנסתי. זה כבר מתחיל לתסכל אותי הדבר השטותי הזה. אם יש לך רעיונות נוספים אני אשמח לשמוע. אולי אוסיף מספר פרטים בהזדמנות זו שאולי משנים משהו בתמונה הכללית: - אני עובד ב-WIN XP PRO עם VC++ 6 - יש לי IE6.0 שעובד בלי שום בעיה. בהגדרות הפרוקסי שלו מוגדר MAINSERVER:8080 עבודה דרך רשת. - מניסיונות שעשיתי עם אפליקציות אחרות, למשל ICQ, KAZAA, TELEPORT PRO וכו´ אף פעם לא הצלחתי להתחבר לשום דבר, רק IE פועל. ייתכן שהבעיה שלי נובעת משם וסיסמה שגויים (איך זה שה-IE לא זקוק לסיסמה, אי-אפשר לדמות את פעולתו?) אני משתמש באלו שאיתם אני נכנס לWINDOWS. אולי זה קשור לפורטים שלא מאופשרים? יש לנו FIREWALL כאן. אשמח לשמוע על עוד רעיונות ביי גיליוטין
 
אין יותר רעיונות???

מקפיץ כי זה חשוב לי.... מקפיץ כי אני כבר בזבזתי על זה הרבה זמן... מקפיץ, מקפיץ ..-- " " -- ..-- " "- -..- - .......
 

gilad_no

New member
עניתי כבר פעמיים

כנראה שנמחקו ההודעות. תצרף בבקשה תצלומי מסך של ההגדרות אינטרנט שלך וכן את הקוד המלא של תהליך ההתחברות שלך. יש לך שם משתמש וסיסמה לפרוקסי??? איך עובד לך הדפדפן?
 
אהלן גלעד, צירפתי את המבוקש...

אני אשרשר 3 פעמים כי לא מצאתי דרך לצרף יותר מקובץ אחד להודעה. כתבתי בשרשורים לעיל את הבעיה ואת תנאי הסביבה. היא נשארה אותו דבר. בכדי לגלוש בדפדפן אני לא צריך להכניס סיסמה, אני פשוט פותח אותו וגולש, כנראה שאיכשהו מוגדר שסיסמת הכניסה שלי ל-WIN XP מאפשרת לי להכנס גם לפרוקסי, רק שזה קורה עם הדפדפן, אבל לא עם האפליקציה שלי. באפליקציה שלי, כאשר נפתח החלון משתמש/סיסמה אני מכניס את הסיסמת כניסה שלי ל-WIN אבל הוא לא מקבל אותה. צריכה להיות דרך כלשהי לדמות את התנהגות הדפדפן (IE6) מתוך האפליקציה, ואז לא צריך סיסמה וגם לא תהיה שום בעיה להתחבר לאינטרנט. פתאום חשבתי עכשיו על רעיון אחר - אתה יודע אולי האם ניתן להשתמש ב-DLL של ה-IE כדי להביא HTTP? נדמה לי שפעם בעבר ניסיתי אבל הייתה רק אפשרות להציג את האתר, אבל הוא לא נתן גישה לקוד HTTP עצמו... תודה גיליוטין קוד האפליקציה:
// GetHttpDlg.cpp : implementation file // #include "stdafx.h" #include "afxinet.h" // ADDED BY GIL #include "GetHttp.h" #include "GetHttpDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CGetHttpDlg dialog CGetHttpDlg::CGetHttpDlg(CWnd* pParent /*=NULL*/) : CDialog(CGetHttpDlg::IDD, pParent) { //{{AFX_DATA_INIT(CGetHttpDlg) m_sHttp = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CGetHttpDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGetHttpDlg) DDX_Text(pDX, IDC_HTTP, m_sHttp); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CGetHttpDlg, CDialog) //{{AFX_MSG_MAP(CGetHttpDlg) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_GET_HTTP, OnGetHttp) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CGetHttpDlg message handlers BOOL CGetHttpDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application´s main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CGetHttpDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CGetHttpDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CGetHttpDlg::OnGetHttp() { CInternetSession iSession("MSIE 5.5", 1, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_DONT_CACHE); CString sUrl = "http://www.cnn.com\r\n"; //I added the ´\r\n´ cause I saw it somewhere, but it ain´t helping CHttpFile * pfile = NULL; pfile = (CHttpFile *) iSession.OpenURL(sUrl,1,INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE); m_sHttp.Empty(); if (pfile != NULL) { CString line; DWORD dwRetCode; pfile->QueryInfoStatusCode(dwRetCode); while (dwRetCode == HTTP_STATUS_PROXY_AUTH_REQ) { if (pfile->ErrorDlg(NULL, ERROR_INTERNET_INCORRECT_PASSWORD, FLAGS_ERROR_UI_FLAGS_GENERATE_DATA|FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS, NULL)== ERROR_INTERNET_FORCE_RETRY) { pfile->SendRequest(); pfile->QueryInfoStatusCode(dwRetCode); } else dwRetCode=0; } for (int i=0; i<150 && pfile->ReadString(line); i++) { m_sHttp += line + "\r\n"; } pfile->Close(); delete pfile; } UpdateData(FALSE); iSession.Close(); //Close the Internet session }​
 
אה.... אני לא מצליח לעלות תמונות...

משום מה הדף של תפוז מחזיר לי שגיאה אם אני מנסה לצרף קובץ, אז אני אכתוב את ההגדרות של הדפדפן מילולית (ההגדרות נמצאות ב-TOOLS > INTERNET OPTIONS > CONNECTIONS) ובכן, ברשימה של ה-DIALUP אין כלום. אני נכנס ל-LAN SETTINGS מסומן (CHECKED) האפשרות AUTOMATICALLY DETECT STTINGS אך זה פועל גם בלי זה. מסומן האפשרות USE PROXY SERVER FOR LAN ADRESS:http://MAINSERVER PORT:8080 ומסומן BYPASS PROXY SERVER FOR LOCAL ADDRESSES זהו. עם ההגדרות האלו הדפדפן מתחבר לאינטרנט בלי שום עיכובים.
 
למעלה