Что нового

Не работает отправка файла POST запросом

Andrey145

Новичок
Сообщения
25
Репутация
0
Версия AutoIt: v3.3.12.0
Доброго времени суток, есть кусок кода
Код:
#include <winhttp.au3>
#include <FileConstants.au3>

Global Const $API_KEY = 'AIzaSyC_PbBzaatunhlSW_ily_W61UK9phx9EaQ'
Global Const $USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36'

main()
Exit

Func main()
   
   local $file_path2 = @ScriptDir & 'out.flac'
  local $file_path = fileopen ($file_path2)
  
    Local $request_response = speech_api_file_recognize($file_path)
    MsgBox(0, 'Ответ', $request_response,1)
		 ConsoleWriteError ("otvet   " &  $request_response )
EndFunc
Func speech_api_file_recognize($file_path, $use_ssl = False)
    Local Const $UTF8 = 1

    Local $h = FileOpen($file_path, $FO_READ + $FO_BINARY)
    Local $file_content = FileRead($h)
    FileClose($h)

    Local $hOpen = _WinHttpOpen($USER_AGENT)
    Local $hConnect, $request_response

    Local $path = '/speech-api/v2/recognize?output=json&lang=ru-ru&key=' & $API_KEY
    Local $headers = 'Content-Type: audio/x-flac; rate=44100;' & @CRLF

    If $use_ssl Then
        $hConnect = _WinHttpConnect($hOpen, 'www.google.com', $INTERNET_DEFAULT_HTTPS_PORT)
        $request_response = _WinHttpSimpleSSLRequest($hConnect, 'POST', $path, Default, $file_content, $headers, False, $UTF8)
    Else
        $hConnect = _WinHttpConnect($hOpen, 'www.google.com')
        $request_response = _WinHttpSimpleRequest($hConnect, 'POST', $path, Default, $file_content, $headers, False, $UTF8)
    EndIf
    
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)

    Return $request_response
EndFunc   ;==>speech_api_recognize

косяк здесь:
Код:
Func main()
   
   local $file_path2 = @ScriptDir & 'out.flac'
  local $file_path = fileopen ($file_path2)
  
    Local $request_response = speech_api_file_recognize($file_path)
    MsgBox(0, 'Ответ', $request_response,1)
		 ConsoleWriteError ("otvet   " &  $request_response )
	  EndFunc


прошу помощи...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Andrey145 [?]
но результат не изменился
В чём проблема? Всё работает.
Код:
Local Const $sAPI_KEY = 'AIzaSyC_PbBzaatunhlSW_ily_W61UK9phx9EaQ'
Local Const $sUSER_AGENT = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36'
Local Const $sURL = StringFormat('https://www.google.com/speech-api/v2/recognize?output=json&lang=ru-ru&key=%s', $sAPI_KEY)

Local $sFilePath = @ScriptDir & '\out.flac'
Local $hFile = FileOpen($sFilePath, 16)
Local $bData = FileRead($hFile)
Local $iBytes = @extended
FileClose($hFile)

$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")

$oHTTP.Open("POST", $sURL)
$oHTTP.SetRequestHeader("Accept", "application/json")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Cache-Control","max-age=0")
$oHTTP.SetRequestHeader("Connection","keep-alive")
$oHTTP.SetRequestHeader("Content-Type", "audio/x-flac; rate=44100")
$oHTTP.SetRequestHeader("Content-Length", $iBytes)
$oHTTP.SetRequestHeader("User-Agent", $sUSER_AGENT)

$oHTTP.Send($bData)
$oHTTP.WaitForResponse
; ConsoleWrite(StringFormat('%s\n\n', $oHTTP.GetAllResponseHeaders))
ConsoleWrite(StringFormat('Response: %s', $oHTTP.ResponseText))

$oHTTP = 0
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Andrey145,
В Вашем коде 2 ошибки, первую Вам показал InnI, вторая - поменяйте
Код:
;...
Local $file_path2 = @ScriptDir & '\out.flac'
Local $file_path = FileOpen($file_path2)
Local $request_response = speech_api_file_recognize($file_path)
;...
на
Код:
;...
Local $file_path2 = @ScriptDir & '\out.flac'
Local $request_response = speech_api_file_recognize($file_path2)
;...
 
Автор
A

Andrey145

Новичок
Сообщения
25
Репутация
0
Спасибо ребят! Вы ПРОФИ :IL_AutoIt_1: ! работает!
:ok:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Andrey145,
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Автор
A

Andrey145

Новичок
Сообщения
25
Репутация
0
madmasles сказал(а):
Andrey145,
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]





ок! буду руководствоваться.
 
Верх