2013-10-19 4 views
0

Я отправляю некоторые данные из своего приложения в php-файл, который может печатать на экране 3 разных вещи (если бы я открыл его в своем браузере), я отправляю что-то на свой URL-адрес как так:MASM InternetOpenUrl/InternetReadFile get Output

sendtourl PROC 

_loop: 

    invoke lstrcpy,addr _urlTmp ,addr _url 
    invoke lstrcat, addr _urlTmp , addr lpszNumber ;----- add parameter to url 
    invoke InternetOpen,addr _agent, 0 ,0,0,0 ;----- specify user agent 
    test eax,eax 
    jz _exit 
    mov [InternetHandle],eax 
    invoke InternetOpenUrl, InternetHandle,ADDR _urlTmp, 0 ,0,0, 0 ;----- open URL 
    test eax,eax 
    jz _exit 
    mov [FileHandle],eax 
    invoke InternetReadFile,FileHandle,addr FileBuffer,1023, addr BytesRead 
    test eax,eax 
    jz _exit 
    mov eax,[BytesRead] 
    mov b[FileBuffer+eax],0 
    ; invoke Sleep,600000 
    invoke InternetCloseHandle, [FileHandle] 
    invoke InternetCloseHandle, [InternetHandle] 

    ret 

_exit: 

    invoke InternetCloseHandle,[FileHandle]  
    invoke InternetCloseHandle,[InternetHandle]  
    ;;invoke ExitProcess,0 

;----- 

    ret 

sendtourl ENDP 

Теперь может быть 1 из 3 вещей, напечатанных в зависимости от того, что был отправлен в URL: да, нет, может быть

можно ли принять этот вывод и положить его обратно в некоторых переменная в моем приложении, поэтому я могу ее повторно использовать, например:

  • Выхода был да = ничего не делать
  • выхода не было = закрыть приложение
  • Выход был возможно = сделать что-то еще

Передающей часть работает нормально, я просто не могу понять, как я могу получить ответ ?

ответ

0

Ответ от веб-страницы должен быть в FileBuffer. Поскольку это текст, вам придется проанализировать содержимое ответа в буфере, пропустить заголовок ответа и выделить текст, который вы ищете, а затем сравнить его с символьными значениями ASCII, чтобы определить, что это (или использовать функция сравнения строк/символов из одной из библиотек MASM).

+0

Звучит довольно сложно, я только начинаю :(.. Есть ли более простой способ, возможно, как получить размер ответа, например, положить текст мусора в ответ, чтобы он равнялся 1кб для да, 2 КБ для нет 3kb может быть или что-то еще? –

+0

Просто для справки и для того, чтобы увидеть, что на самом деле находится в FileBuffer, не следует 'invoke MessageBox, NULL, addr FileBuffer, addr FileBuffer, MB_OK' выводить все, что там есть? Сообщение только пустое –

+0

С немного возиться, я, наконец, получил только текст, который хочу, спасибо :) –