JonF Posted Monday at 05:25 PM Share Posted Monday at 05:25 PM (edited) I'm trying to upload to a text-to-speech website. (Beege rewrite of Curl.au3). expandcollapse popup#include <Date.au3> #include <WinAPIDiag.au3> #include <Curl\Curl.au3> Test() Func Test() ;Create an array of request headers Local $arrHeaders = Curl_Slist_Append(0, "Accept: application/json") $arrHeaders = Curl_Slist_Append($arrHeaders, "Content-Type: application/json") ;Set up and execute cURL request $hCurl = Curl_Easy_Init() If Not $hCurl Then Return MsgBox($MB_ICONERROR, "Error", "Curl_Easy_Init() failed.") Curl_Easy_Setopt($hCurl, $CURLOPT_URL, "https://speechgen.io/index.php?r=api/text") Curl_Easy_Setopt($hCurl, $CURLOPT_HTTPHEADER, $aHeaders) Curl_Easy_Setopt($hCurl, $CURLOPT_USERAGENT, "AutoIt/cURL") Curl_Easy_Setopt($hCurl, $CURLOPT_VERBOSE, 1) Curl_Easy_Setopt($hCurl, $CURLOPT_SSL_VERIFYPEER, 0) Curl_Easy_Setopt($hCurl, $CURLOPT_READFUNCTION, Curl_DataReadCallback()) Curl_Easy_Setopt($hCurl, $CURLOPT_CUSTOMREQUEST, "PUT") Curl_Easy_Setopt($hCurl, $CURLOPT_UPLOAD, 1) $data = '{"Token":"{redacted}","email":"email@gmail.com","voice":"Ostap","format":"mp3","speed":"0.8","emotion":"good", _ "pause_sentence":"300","pause_paragraph":"400","bitrate":"48000",' $data = $data & '"text":"' & 'Heo світ' & '"}' ConsoleWrite(@crlf & $data & @crlf & @crlf) Curl_Easy_Setopt($hCurl, $CURLOPT_POSTFIELDS, $data) ;Get response code and response $iRespCode = Curl_Easy_Perform($hCurl) If $iRespCode <> $CURLE_OK Then Return ConsoleWrite("Status Message: " & Curl_Easy_StrError($iRespCode) & @LF) $sResponse = BinaryToString(Curl_Data_Get($hCurl)) ;Clean up curl environment Curl_Easy_Cleanup($hCurl) Curl_Data_Cleanup($hCurl) ;Display response ConsoleWrite($sResponse & @CRLF) EndFunc ;==>Test The result is: expandcollapse popup* Host speechgen.io:443 was resolved. * IPv6: (none) * IPv4: 5.45.72.182 * Trying 5.45.72.182:443... * ALPN: curl offers h2,http/1.1 * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / [blank] / UNDEF * ALPN: server accepted http/1.1 * Server certificate: * subject: CN=speechgen.io * start date: Sep 15 23:13:56 2024 GMT * expire date: Dec 14 23:13:55 2024 GMT * subjectAltName: host "speechgen.io" matched cert's "speechgen.io" * issuer: C=US; O=Let's Encrypt; CN=R10 * SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway. * Certificate level 0: Public key type ? (2048/112 Bits/secBits), signed using sha256WithRSAEncryption * Certificate level 1: Public key type ? (2048/112 Bits/secBits), signed using sha256WithRSAEncryption * Connected to speechgen.io (5.45.72.182) port 443 * using HTTP/1.x > PUT /index.php?r=api/text HTTP/1.1 Host: speechgen.io User-Agent: AutoIt/cURL Accept: */* Content-Type: application/json Content-Length: 4 * upload completely sent off: 4 bytes < HTTP/1.1 200 OK < Server: nginx/1.14.1 < Date: Mon, 11 Nov 2024 16:06:28 GMT < Content-Type: text/html; charset=UTF-8 < Transfer-Encoding: chunked < Connection: keep-alive < X-Powered-By: PHP/7.3.33 < Access-Control-Allow-Origin: * < Access-Control-Allow-Methods: GET, POST < Access-Control-Allow-Headers: X-Requested-With < Expires: Thu, 19 Nov 1981 08:52:00 GMT < Cache-Control: no-store, no-cache, must-revalidate < Pragma: no-cache < Set-Cookie: PHPSESSID=e271ada2cc0504802aa013ef915dfc55; path=/ < * Connection #0 to host speechgen.io left intact {"id":0,"status":-1,"file":"","file_cors":"","parts":0,"parts_done":0,"duration":0,"format":"mp3","error":"Data is empty , use Post or Get request","balans":0} Apparently it's not getting my data as a POST request?? Edited Monday at 05:27 PM by JonF Link to comment Share on other sites More sharing options...
ioa747 Posted Monday at 06:50 PM Share Posted Monday at 06:50 PM Is this ok? Curl_Easy_Setopt($hCurl, $CURLOPT_HTTPHEADER, $aHeaders) I know that I know nothing Link to comment Share on other sites More sharing options...
JonF Posted Monday at 07:02 PM Author Share Posted Monday at 07:02 PM It appears to be correct. CURLOPT_HTTPHEADER explained Link to comment Share on other sites More sharing options...
JonF Posted Monday at 07:28 PM Author Share Posted Monday at 07:28 PM I got the base code from the bottom of https://www.autoitscript.com/forum/topic/207859-curl-udf-libcurl-with-x64-support/page/2/#comments. It wasn't working. The coment that fixed it was on the next page. Quote Try using copy post field instead of post field But I can't figure out what that means. Link to comment Share on other sites More sharing options...
ioa747 Posted Monday at 08:49 PM Share Posted Monday at 08:49 PM (edited) I don't know about the script, it just clicked my eye, that $aHeaders is not defined anywhere in the script. Did you mean $arrHeaders ? Edited Monday at 08:58 PM by ioa747 I know that I know nothing Link to comment Share on other sites More sharing options...
JonF Posted Tuesday at 01:18 AM Author Share Posted Tuesday at 01:18 AM Ah, you're right. It's a mistake from the original source. Thanks. Alas, fixing it doesn't change anything. Link to comment Share on other sites More sharing options...
Developers Jos Posted Tuesday at 08:49 AM Developers Share Posted Tuesday at 08:49 AM Did you also fix this line?: $data = '{"Token":"{redacted}","email":"email@gmail.com","voice":"Ostap","format":"mp3","speed":"0.8","emotion":"good", _ "pause_sentence":"300","pause_paragraph":"400","bitrate":"48000",' which should be: $data = '{"Token":"{redacted}","email":"email@gmail.com","voice":"Ostap","format":"mp3","speed":"0.8","emotion":"good",' & _ '"pause_sentence":"300","pause_paragraph":"400","bitrate":"48000",' Try something like this and see what that does: expandcollapse popup#include <Date.au3> #include <WinAPIDiag.au3> #include <Curl\Curl.au3> Test() Func Test() ;Create an array of request headers Local $arrHeaders = Curl_Slist_Append(0, "Accept: application/json") $arrHeaders = Curl_Slist_Append($arrHeaders, "Content-Type: application/json") ;Set up and execute cURL request $hCurl = Curl_Easy_Init() If Not $hCurl Then Return MsgBox($MB_ICONERROR, "Error", "Curl_Easy_Init() failed.") Curl_Easy_Setopt($hCurl, $CURLOPT_URL, "https://speechgen.io/index.php?r=api/text") Curl_Easy_Setopt($hCurl, $CURLOPT_HTTPHEADER, $arrHeaders) Curl_Easy_Setopt($hCurl, $CURLOPT_USERAGENT, "AutoIt/cURL") Curl_Easy_Setopt($hCurl, $CURLOPT_VERBOSE, 1) Curl_Easy_Setopt($hCurl, $CURLOPT_SSL_VERIFYPEER, 0) Curl_Easy_Setopt($hCurl, $CURLOPT_READFUNCTION, Curl_DataReadCallback()) ;Curl_Easy_Setopt($hCurl, $CURLOPT_CUSTOMREQUEST, "PUT") ;Curl_Easy_Setopt($hCurl, $CURLOPT_UPLOAD, 1) $data = '{"Token":"-redacted-","email":"email@gmail.com","voice":"Ostap","format":"mp3","speed":"0.8","emotion":"good",' & _ '"pause_sentence":"300","pause_paragraph":"400","bitrate":"48000",' & _ '"text":"Heo світ"}' ConsoleWrite(@crlf & $data & @crlf & @crlf) Curl_Easy_Setopt($hCurl, $CURLOPT_POSTFIELDS, $data) ;Get response code and response $iRespCode = Curl_Easy_Perform($hCurl) If $iRespCode <> $CURLE_OK Then Return ConsoleWrite("Status Message: " & Curl_Easy_StrError($iRespCode) & @LF) $sResponse = BinaryToString(Curl_Data_Get($hCurl)) ;Clean up curl environment Curl_Easy_Cleanup($hCurl) Curl_Data_Cleanup($hCurl) ;Display response ConsoleWrite($sResponse & @CRLF) EndFunc ;==>Test SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
JonF Posted Thursday at 02:59 PM Author Share Posted Thursday at 02:59 PM Thanks for catching another error, but that's not it. It's the value of CURLOPT_POSTFIELDS. I've discovered that the site wants the data URI encoded in a weird format with the only header "Content-Type: application/x-www-form-urlencoded". I have had success with ShellExecuteWait with curl.exe: #include <FileConstants.au3> #include <StringConstants.au3> Func _URIEncode($sData) ; Prog@ndy Local $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "") Local $nChar $sData = "" For $i = 1 To $aData[0] ; ConsoleWrite($aData[$i] & @CRLF) $nChar = Asc($aData[$i]) Switch $nChar Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126 $sData &= $aData[$i] Case 32 $sData &= "+" Case Else $sData &= "%" & Hex($nChar, 2) EndSwitch Next Return $sData EndFunc ;==>_URIEncode Global $Text,$data, $sAddress = 'https://speechgen.io/index.php?r=api/text', $cURLPath = "C:\Program Files\curl-8.11.0_1\bin\curl" $Text = 'Привіт шановний' $Command = ' --data "token=-redacted-&email=email%40gmail.com&' & _ 'voice=Ostap&format=mp3&speed=0.8&emotion=good&pause_sentence=300&pause_paragraph=400&bitrate=48000&text=' & _ _URIEncode($Text) & '" -k -H "Content-Type: application/x-www-form-urlencoded" ' _ & $sAddress & ' >' & @ScriptDir & '\Result.txt' $Result = ShellExecuteWait($cURLPath, $Command, "", "", @SW_MINIMIZE) (Note the encoded "@" in the email adress.) Which produces: {"id":"32796442","status":1,"file":"https:\/\/speechgen.io\/texttomp3\/20241104\/p_32107758_128.mp3","file_cors":"https:\/\/speechgen.io\/index.php?r=site\/download&prj=32796442&cors=28ee739ca163e1cb41b3b241d677d499","parts":0,"parts_done":0,"duration":"2","format":"mp3","error":"","balans":"19691","cost":"0"} However, this: expandcollapse popup#include <WinAPIDiag.au3> #include <Curl\Curl.au3> ; Beege rewrite #include <Constants.au3> Func _URIEncode($sData) Local $aData = StringSplit(BinaryToString(StringToBinary($sData,4),1),"") Local $nChar $sData="" For $i = 1 To $aData[0] $nChar = Asc($aData[$i]) Switch $nChar Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126 $sData &= $aData[$i] Case 32 $sData &= "+" Case Else $sData &= "%" & Hex($nChar,2) EndSwitch Next Return $sData EndFunc Test() Func Test() Local $arrHeaders = Curl_Slist_Append(0, "Content-Type: application/x-www-form-urlencoded") $Text = "Привіт шановний" ;Set up and execute cURL request $hCurl = Curl_Easy_Init() If Not $hCurl Then Return MsgBox($MB_ICONERROR, "Error", "Curl_Easy_Init() failed.") Curl_Easy_Setopt($hCurl, $CURLOPT_URL, "https://speechgen.io/index.php?r=api/text") Curl_Easy_Setopt($hCurl, $CURLOPT_HTTPHEADER, $arrHeaders) Curl_Easy_Setopt($hCurl, $CURLOPT_VERBOSE, 1) Curl_Easy_Setopt($hCurl, $CURLOPT_USERAGENT, "AutoIt/cURL") Curl_Easy_Setopt($hCurl, $CURLOPT_SSL_VERIFYPEER, 0) Curl_Easy_Setopt($hCurl, $CURLOPT_READFUNCTION, Curl_DataReadCallback()) Curl_Easy_Setopt($hCurl, $CURLOPT_CUSTOMREQUEST, "PUT") Curl_Easy_Setopt($hCurl, $CURLOPT_UPLOAD, 1) Curl_Easy_Setopt($hCurl, $CURLOPT_POST, 1) $data = '"token=-redacted-&email=email%40gmail.com&', & _ 'voice=Ostap&format=mp3&speed=0.8&emotion=good&pause_sentence=300&pause_paragraph=400&bitrate=48000&text=' & _ _URIEncode($Text) & '"' ConsoleWrite(@crlf & $data & @crlf & @crlf) Curl_Easy_Setopt($hCurl, $CURLOPT_POSTFIELDS, $data) $iRespCode = Curl_Easy_Perform($hCurl) If $iRespCode <> $CURLE_OK Then Return ConsoleWrite("Status Message: " & Curl_Easy_StrError($iRespCode) & @LF) $sResponse = BinaryToString(Curl_Data_Get($hCurl)) ;Clean up curl environment Curl_Easy_Cleanup($hCurl) Curl_Data_Cleanup($hCurl) ;Display response ConsoleWrite($sResponse & @CRLF) EndFunc Produces: {"id":0,"status":-1,"file":"","file_cors":"","parts":0,"parts_done":0,"duration":0,"format":"mp3","error":"Data is empty , use Post or Get request","balans":0}+>09:44:47 AutoIt3.exe ended.rc:0 Note "error":"Data is empty , use Post or Get request" I tried setting up a pointer a found at: ;Create binary buffer and store http post data in it $tByteBuffer = DllStructCreate("byte buffer[1000];") If @error Then Exit MsgBox($MB_ICONERROR + $MB_TOPMOST, "ERROR", "Failed to create string buffer - @error = " & @error) $tByteBuffer.buffer = $data Curl_Easy_Setopt($hCurl, $CURLOPT_POSTFIELDS, $tByteBuffer.buffer) But it made no difference. Link to comment Share on other sites More sharing options...
Developers Jos Posted Thursday at 03:46 PM Developers Share Posted Thursday at 03:46 PM What about this version?: expandcollapse popup#include <Date.au3> #include <WinAPIDiag.au3> #include <Curl.au3> Test() Func Test() ;Set up and execute cURL request $hCurl = Curl_Easy_Init() If Not $hCurl Then Return MsgBox($MB_ICONERROR, "Error", "Curl_Easy_Init() failed.") $url = "https://speechgen.io/index.php?r=api/text" ; $Text = "Привіт шановний" $data = 'token=-redacted-' & _ '&email=' & _URIEncode('email@gmail.com') & _ '&voice=Ostap' & _ '&format=mp3' & _ '&speed=0.8' & _ '&emotion=good' & _ '&pause_sentence=300' & _ '&pause_paragraph=400' & _ '&bitrate=48000' & _ '&text=' & _URIEncode($Text) ConsoleWrite("Data: " & $data & @CRLF) $CURLOPT_RETURNTRANSFER = 19913 Curl_Easy_Setopt($hCurl, $CURLOPT_RETURNTRANSFER, 1) ; Curl_Easy_Setopt($hCurl, $CURLOPT_URL, $url) ; Curl_Easy_Setopt($hCurl, $CURLOPT_HEADER, False) ; Curl_Easy_Setopt($hCurl, $CURLOPT_SSL_VERIFYHOST, False) ; Curl_Easy_Setopt($hCurl, $CURLOPT_POST, 1) ; Curl_Easy_Setopt($hCurl, $CURLOPT_POSTFIELDS, $data) ;Get response code and response $iRespCode = Curl_Easy_Perform($hCurl) If $iRespCode <> $CURLE_OK Then Return ConsoleWrite("Status Message: " & Curl_Easy_StrError($iRespCode) & @LF) $sResponse = BinaryToString(Curl_Data_Get($hCurl)) ;Clean up curl environment Curl_Easy_Cleanup($hCurl) Curl_Data_Cleanup($hCurl) ;Display response ConsoleWrite($sResponse & @CRLF) EndFunc ;==>Test Func _URIEncode($sData) ; Prog@ndy Local $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "") Local $nChar $sData = "" For $i = 1 To $aData[0] ; ConsoleWrite($aData[$i] & @CRLF) $nChar = Asc($aData[$i]) Switch $nChar Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126 $sData &= $aData[$i] Case 32 $sData &= "+" Case Else $sData &= "%" & Hex($nChar, 2) EndSwitch Next Return $sData EndFunc ;==>_URIEncode I took the Example of a short text voiceover in PHP variant 1 from their WebSite and converted that to Autoit3. SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
JonF Posted Thursday at 04:43 PM Author Share Posted Thursday at 04:43 PM It needs Curl_Easy_Setopt($hCurl, $CURLOPT_SSL_VERIFYPEER, 0) Still fails, same way. I have their PHP example working but that's really inconvenient.😁 Link to comment Share on other sites More sharing options...
TheXman Posted Thursday at 05:51 PM Share Posted Thursday at 05:51 PM (edited) Why are you insisting on using a UDFs that are based on the libcurl API's? That is probably THE most difficult to use for novices and requires a much deeper understanding of HTTP requests and the libcurl APIs themselves.. As you probably read in the post you referenced above, in the last post, I mentioned several other ways that you can do your request to speechgen.io. Most of those alternative ways are much easier to understand, script, and maintain. If you are adamant about using Beege's UDF lib, then try the script below. There were a few different ways to resolve the issues. The script below is the simplest of the ways and didn't require and DllStructs. If it does not work, then please post the output. Keep in mind that without a valid speechgen.io token, I am not able to test and verify that the script works. So there may be minor tweaks that are needed. The output from the script below will let me know. If you have questions about the script, please feel free to ask. expandcollapse popup#AutoIt3Wrapper_AU3Check_Parameters=-w 3 -w 4 -w- 5 -w 6 -d #include <Constants.au3> #include <curl-beege\curl.au3> ; <== Modify path to UDF as needed curl_post_example() Func curl_post_example() Local $hCurl = Null, _ $hReqHeaders = Null, _ $hRespBody = 1, _ $hRespHeaders = 2 Local $iRetCode = 0, _ $iRespCode = 0 Local $sPostData = _ '{' & _ ' "Token": "1234-redacted",' & _ ;<== Enter your token ' "email": "email@gmail.com",' & _ ' "voice": "Ostap",' & _ ' "format": "mp3",' & _ ' "speed": "0.8",' & _ ' "emotion": "good",' & _ ' "pause_sentence": "300",' & _ ' "pause_paragraph": "400",' & _ ' "bitrate": "48000",' & _ ' "text": "Привіт шановний"' & _ '}' ;Initialize EasyCurl POST request and set options $hCurl = Curl_Easy_Init() $hReqHeaders = Curl_Slist_Append($hReqHeaders, "Content-Type: application/json") $hReqHeaders = Curl_Slist_Append($hReqHeaders, "Accept: application/json") Curl_Easy_Setopt($hCurl, $CURLOPT_URL, "https://speechgen.io/index.php?r=api/text") Curl_Easy_Setopt($hCurl, $CURLOPT_HTTPHEADER, $hReqHeaders) Curl_Easy_Setopt($hCurl, $CURLOPT_SSL_VERIFYPEER, 0) Curl_Easy_Setopt($hCurl, $CURLOPT_FOLLOWLOCATION, 1) Curl_Easy_Setopt($hCurl, $CURLOPT_WRITEFUNCTION, Curl_DataWriteCallback()) Curl_Easy_Setopt($hCurl, $CURLOPT_WRITEDATA, $hRespBody) Curl_Easy_Setopt($hCurl, $CURLOPT_HEADERFUNCTION, Curl_DataWriteCallback()) Curl_Easy_Setopt($hCurl, $CURLOPT_HEADERDATA, $hRespHeaders) Curl_Easy_Setopt($hCurl, $CURLOPT_COPYPOSTFIELDS, $sPostData) ;Submit request $iRetCode = Curl_Easy_Perform($hCurl) If $iRetCode <> $CurlE_OK Then Exit MsgBox($MB_ICONERROR + $MB_TOPMOST, "ERROR", "Request failed." & @CRLF & $iRetCode & " " & Curl_Easy_StrError($iRetCode)) ;Display response info ConsoleWrite("POST Data: " & $sPostData & @CRLF) ConsoleWrite("Curl RetCode: " & $iRespCode & " " & Curl_Easy_StrError($iRetCode) & @CRLF) ConsoleWrite("HTTP Resp Code: " & Curl_Easy_GetInfo($hCurl, $CurlINFO_RESPONSE_CODE) & @CRLF) ConsoleWrite("Content Type: " & Curl_Easy_GetInfo($hCurl, $CurlINFO_CONTENT_TYPE) & @CRLF) ConsoleWrite("Content Size: " & Curl_Easy_GetInfo($hCurl, $CurlINFO_SIZE_DOWNLOAD) & @CRLF) ConsoleWrite(@CRLF & "Response Headers:" & @CRLF & BinaryToString(Curl_Data_Get($hRespHeaders), $SB_UTF8) & @CRLF) ConsoleWrite(@CRLF & "Response Body:" & @CRLF & BinaryToString(Curl_Data_Get($hRespBody) , $SB_UTF8) & @CRLF) ;Clean up Curl_Data_Cleanup($hRespBody) Curl_Data_Cleanup($hRespHeaders) Curl_Slist_Free_All($hReqHeaders) Curl_Easy_Cleanup($hCurl) EndFunc Edited Thursday at 06:55 PM by TheXman CryptoNG UDF: Cryptography API: Next Gen jq UDF: Powerful and Flexible JSON Processor | jqPlayground: An Interactive JSON Processor Xml2Json UDF: Transform XML to JSON | HttpApi UDF: HTTP Server API | Roku Remote: Example Script About Me How To Ask Good Questions On Technical And Scientific Forums (Detailed) | How to Ask Good Technical Questions (Brief) "Any fool can know. The point is to understand." -Albert Einstein "If you think you're a big fish, it's probably because you only swim in small ponds." ~TheXman Link to comment Share on other sites More sharing options...
JonF Posted Thursday at 07:41 PM Author Share Posted Thursday at 07:41 PM (edited) I appreciate your attempt, but perhaps you should have read the tropic before stepping in. The site will not accept those headers and will not accept a JSON formatted query and will not accept an unencoded string for the "text" parameter. After modifying until it works it fails in the same manner: POST Data: "token=-redacted-&email=email%40gmail.com&voice=Ostap&format=mp3&speed=0.8&emotion=good&pause_sentence=300&pause_paragraph=400&bitrate=48000&text=%D0%9F%D1%80%D0%B8%D0%B2%D1%96%D1%82+%D1%88%D0%B0%D0%BD%D0%BE%D0%B2%D0%BD%D0%B8%D0%B9" Curl RetCode: 0 No error HTTP Resp Code: 200 Content Type: text/html; charset=UTF-8 Content Size: 159 Response Headers: Response Body: HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Thu, 14 Nov 2024 19:36:04 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/7.3.33 Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST Access-Control-Allow-Headers: X-Requested-With Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Set-Cookie: PHPSESSID=3f0b423fffdf24f42b2f966cba92c010; path=/ {"id":0,"status":-1,"file":"","file_cors":"","parts":0,"parts_done":0,"duration":0,"format":"mp3","error":"Data is empty , use Post or Get request","balans":0} I looked at winhttp and couldn't make head nor tail of it. Using COM objects I don't understand at all. I'll try that again. I'm a novice at AUtoIT but give me FORTRAN, Basic, i386 assembly language, or IBM 370 assembly language I can run rings around you. I'll look at WinHTTP.au3 again. Edited Thursday at 07:46 PM by JonF Link to comment Share on other sites More sharing options...
TheXman Posted Thursday at 07:46 PM Share Posted Thursday at 07:46 PM (edited) On 11/14/2024 at 7:41 PM, JonF said: perhaps you should have read the tropic before stepping in As I said, without a token, I can't test the script and that it may need to be tweaked. Changing the POST data format and encoding some of its values are small tweaks. Pardon me for "stepping in" to try to help you. It won't happen again. Edit: For the record, I bought a token so I could test my script. After changing the post data to the correct format, it worked just fine. Result: { "id": "32XXXXXX", "status": 1, "file": "https://speechgen.io/texttomp3/20241115/p_32972563_469.mp3", "file_cors": "https://speechgen.io/index.php?r=site/download&prj=329XXXX6&cors=be7aed14388cb88e754998eXXXXXXXX", "parts": 0, "parts_done": 0, "duration": "1", "format": "mp3", "error": "", "balans": "25489", "cost": "0" } Edited 18 hours ago by TheXman CryptoNG UDF: Cryptography API: Next Gen jq UDF: Powerful and Flexible JSON Processor | jqPlayground: An Interactive JSON Processor Xml2Json UDF: Transform XML to JSON | HttpApi UDF: HTTP Server API | Roku Remote: Example Script About Me How To Ask Good Questions On Technical And Scientific Forums (Detailed) | How to Ask Good Technical Questions (Brief) "Any fool can know. The point is to understand." -Albert Einstein "If you think you're a big fish, it's probably because you only swim in small ponds." ~TheXman Link to comment Share on other sites More sharing options...
JonF Posted 2 hours ago Author Share Posted 2 hours ago Your edited example doesn't work for me. I changed only the cURL path, token, and email. Response Body: {"id":0,"status":-1,"file":"","file_cors":"","parts":0,"parts_done":0,"duration":0,"format":"mp3","error":"Data is empty , use Post or Get request","balans":0} Link to comment Share on other sites More sharing options...
TheXman Posted 1 hour ago Share Posted 1 hour ago (edited) 37 minutes ago, JonF said: Your edited example doesn't work for me. I didn't edit the script in my previous post. I only changed a grammatical error in the text of that post. The change I made to the POST data was made locally on my PC. As I said before, me "stepping in" to help you would not happen again. Edited 1 hour ago by TheXman CryptoNG UDF: Cryptography API: Next Gen jq UDF: Powerful and Flexible JSON Processor | jqPlayground: An Interactive JSON Processor Xml2Json UDF: Transform XML to JSON | HttpApi UDF: HTTP Server API | Roku Remote: Example Script About Me How To Ask Good Questions On Technical And Scientific Forums (Detailed) | How to Ask Good Technical Questions (Brief) "Any fool can know. The point is to understand." -Albert Einstein "If you think you're a big fish, it's probably because you only swim in small ponds." ~TheXman Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now