Option Explicit
Function GetDataFromURL(strURL, strMethod, strPostData, Optional strCharSet = "UTF-8")
Dim lngTimeout
Dim strUserAgentString
Dim intSslErrorIgnoreFlags
Dim blnEnableRedirects
Dim blnEnableHttpsToHttpRedirects
Dim strHostOverride
Dim strLogin
Dim strPassword
Dim strResponseText
Dim objWinHttp
lngTimeout = 59000
strUserAgentString = "http_requester/0.1"
intSslErrorIgnoreFlags = 13056 ' 13056: ignore all err, 0: accept no err
blnEnableRedirects = True
blnEnableHttpsToHttpRedirects = True
strHostOverride = ""
strLogin = ""
strPassword = ""
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
'--------------------------------------------------------------------
'objWinHttp.SetProxy 2, "xxx.xxx.xxx.xxx:xxxx", "" 'Proxy를 사용하는 환경에서 설정
'--------------------------------------------------------------------
objWinHttp.SetTimeouts lngTimeout, lngTimeout, lngTimeout, lngTimeout
objWinHttp.Open strMethod, strURL
If strMethod = "POST" Then
objWinHttp.SetRequestHeader "Content-type", "application/x-www-form-urlencoded; charset=UTF-8"
Else
objWinHttp.SetRequestHeader "Content-type", "text/html; charset=euc-kr"
End If
If strHostOverride <> "" Then
objWinHttp.SetRequestHeader "Host", strHostOverride
End If
objWinHttp.SetRequestHeader "Referer", "https://ko.dict.naver.com/" '2022-07-08 추가
objWinHttp.Option(0) = strUserAgentString
objWinHttp.Option(4) = intSslErrorIgnoreFlags
objWinHttp.Option(6) = blnEnableRedirects
objWinHttp.Option(12) = blnEnableHttpsToHttpRedirects
If (strLogin <> "") And (strPassword <> "") Then
objWinHttp.SetCredentials strLogin, strPassword, 0
End If
On Error Resume Next
objWinHttp.Send (strPostData)
objWinHttp.WaitForResponse
If Err.Number = 0 Then
If objWinHttp.Status = "200" Then
'GetDataFromURL = objWinHttp.ResponseText
GetDataFromURL = BinaryToText(objWinHttp.ResponseBody, strCharSet)
Else
GetDataFromURL = "HTTP " & objWinHttp.Status & " " & _
objWinHttp.StatusText
End If
Else
GetDataFromURL = "Error " & Err.Number & " " & Err.Source & " " & _
Err.Description
End If
On Error GoTo 0
Set objWinHttp = Nothing
End Function
Option Explicit
Function GetDataFromURL(strURL, strMethod, strPostData, Optional strCharSet = "UTF-8")
Dim lngTimeout
Dim strUserAgentString
Dim intSslErrorIgnoreFlags
Dim blnEnableRedirects
Dim blnEnableHttpsToHttpRedirects
Dim strHostOverride
Dim strLogin
Dim strPassword
Dim strResponseText
Dim objWinHttp
lngTimeout = 59000
strUserAgentString = "http_requester/0.1"
intSslErrorIgnoreFlags = 13056 ' 13056: ignore all err, 0: accept no err
blnEnableRedirects = True
blnEnableHttpsToHttpRedirects = True
strHostOverride = ""
strLogin = ""
strPassword = ""
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
'--------------------------------------------------------------------
'objWinHttp.SetProxy 2, "xxx.xxx.xxx.xxx:xxxx", "" 'Proxy를 사용하는 환경에서 설정
'--------------------------------------------------------------------
objWinHttp.SetTimeouts lngTimeout, lngTimeout, lngTimeout, lngTimeout
objWinHttp.Open strMethod, strURL
If strMethod = "POST" Then
objWinHttp.SetRequestHeader "Content-type", "application/x-www-form-urlencoded; charset=UTF-8"
Else
objWinHttp.SetRequestHeader "Content-type", "text/html; charset=euc-kr"
End If
If strHostOverride <> "" Then
objWinHttp.SetRequestHeader "Host", strHostOverride
End If
objWinHttp.SetRequestHeader "Referer", "https://ko.dict.naver.com/" '2022-07-08 추가
objWinHttp.Option(0) = strUserAgentString
objWinHttp.Option(4) = intSslErrorIgnoreFlags
objWinHttp.Option(6) = blnEnableRedirects
objWinHttp.Option(12) = blnEnableHttpsToHttpRedirects
If (strLogin <> "") And (strPassword <> "") Then
objWinHttp.SetCredentials strLogin, strPassword, 0
End If
On Error Resume Next
objWinHttp.Send (strPostData)
objWinHttp.WaitForResponse
If Err.Number = 0 Then
If objWinHttp.Status = "200" Then
'GetDataFromURL = objWinHttp.ResponseText
GetDataFromURL = BinaryToText(objWinHttp.ResponseBody, strCharSet)
Else
GetDataFromURL = "HTTP " & objWinHttp.Status & " " & _
objWinHttp.StatusText
End If
Else
GetDataFromURL = "Error " & Err.Number & " " & Err.Source & " " & _
Err.Description
End If
On Error GoTo 0
Set objWinHttp = Nothing
End Function
잘 동작한다!
이 오류를 패치한 버전(네이버 국어사전/영어사전 검색 도구_v1.01_20220708)을 github에 업로드 해두었고, 아래 URL로 바로 다운로드할 수 있다.
안녕하세요. 단어추출도구에 이어 사전 검색도구도 잘 사용중에 있습니다.
그런데 한가지를 발견했는데요.
premium을 오타로 preimium으로 입력하여 검색했는데, premium의 결과값을 뱉어주었습니다.
저는 의미를 붙이는 작업과 함께 오타도 함께 검출중이었는데.. 이렇게 결과값이 나오더라구요 ^^;;
네이버사전에서 해당 단어를 검색하니 자동으로 오타변환을 해서 결과값을 줘서 그런 것 같긴하지만.. 정확히 일치하는 경우만 뱉어내도록 하면 좋을 것 같습니다…(물론 ‘정확히일치’라는 옵션이 있긴합니다만 ^^;;)
안녕하세요. 단어추출도구에 이어 사전 검색도구도 잘 사용중에 있습니다.
그런데 한가지를 발견했는데요.
premium을 오타로 preimium으로 입력하여 검색했는데, premium의 결과값을 뱉어주었습니다.
저는 의미를 붙이는 작업과 함께 오타도 함께 검출중이었는데.. 이렇게 결과값이 나오더라구요 ^^;;
네이버사전에서 해당 단어를 검색하니 자동으로 오타변환을 해서 결과값을 줘서 그런 것 같긴하지만.. 정확히 일치하는 경우만 뱉어내도록 하면 좋을 것 같습니다…(물론 ‘정확히일치’라는 옵션이 있긴합니다만 ^^;;)
좋은 의견 감사합니다.
네이버 사전 검색결과 JSON 데이터를 확인해 보니 입력한 단어(A)와 검색결과의 단어(B)가 다를 때 두 값을 각각 관리하는 항목이 있네요.
입력한 단어(A)와 검색결과의 단어(B)가 다른 경우를 확인할 수 있도록 조만간 기능을 추가하겠습니다.
오오!! 변경 적용가능한 항목이라 다행입니다!! 기대하겠습니다.~ 고맙습니다
기능 패치하여 글 작성해 두었습니다.
https://prodskill.com/ko/naver-korean-english-dictionary-search-tool-update-20240201/
내용 참고하세요.
감사합니다!! 여전히 잘 쓰고 있습니다~~
고맙습니다~ ^^