សម្រាប់ស្តាក់ HTTP របស់ Jena ដែលផ្អែកលើ JDK ដែលបានណែនាំក្នុង Jena 4.3 សូមកំណត់ transport ដែលបញ្ជូនទៅអ្នកបង្កើតសំណួរ។ ពាក្យសម្ងាត់ចំណុចបញ្ចប់ SPARQL និងពាក្យសម្ងាត់ប្រូកស៊ីអាចត្រូវបានស្នើដោយម៉ាស៊ីនផ្សេងគ្នា។

import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.http.HttpClient;
import org.apache.jena.sparql.exec.http.QueryExecutionHTTP;

var http = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("proxy.example", 8080)))
    .authenticator(proxyAuthenticator)
    .build();

var execution = QueryExecutionHTTP.service(endpointUrl)
    .httpClient(http)
    .query("ASK { ?s ?p ?o }")
    .build();

ផ្នែកនេះបង្កើតការប្រតិបត្តិសំណួរមួយ។ endpointUrl គឺជា URL ពិតរបស់សេវា SPARQL; proxyAuthenticator គឺជា java.net.Authenticator ដែលកម្មវិធីផ្តល់ឲ្យ។ ដំណើរការ និងបិទការប្រតិបត្តិសំណួរតាមវដ្តជីវិតសំណួរធម្មតារបស់កម្មវិធី។

នៅក្នុងវិធីសាស្ត្រ getPasswordAuthentication របស់ឧបករណ៍ផ្ទៀងផ្ទាត់នោះ សូមត្រឡប់ PasswordAuthentication របស់ប្រូកស៊ីតែនៅពេល getRequestorType() == RequestorType.PROXY និងនៅពេលម៉ាស៊ីន និងច្រកដែលស្នើសុំត្រូវនឹងអ្នកកណ្តាលដែលបានកំណត់។ ត្រឡប់ null សម្រាប់បញ្ហាប្រឈមដែលមិនពាក់ព័ន្ធ។ ការភ្ជាប់វត្ថុនេះទៅអតិថិជនរក្សាការជ្រើសរើសឲ្យនៅក្នុងអតិថិជននោះ។

អានអ្វីដែលប្រូកស៊ីកំពុងស្នើ

ការឆ្លើយតប 407 បង្ហាញបញ្ហាប្រឈមផ្ទៀងផ្ទាត់ប្រូកស៊ី។ ក្បាល Proxy-Authenticate របស់វាប្រាប់ពីគ្រោងការណ៍ដែលបានផ្តល់ជូន; ស្ថានភាពតែម្នាក់ឯងមិនបែងចែក Basic ពី NTLM ឬគ្រោងការណ៍ផ្សេងទេ។

ប្រៀបធៀបការផ្តល់ជូននោះជាមួយសមត្ថភាព និងគោលនយោបាយផ្ទៀងផ្ទាត់របស់អតិថិជន JDK ដែលបានដាក់ឲ្យដំណើរការ។ ការផ្តល់ឈ្មោះអ្នកប្រើ និងពាក្យសម្ងាត់មិនបន្ថែមគ្រោងការណ៍ដែលមិនគាំទ្រទេ។ សម្រាប់គោលដៅ HTTPS សូមពិនិត្យគោលនយោបាយ jdk.http.auth.tunneling.disabledSchemes របស់ JDK ផងដែរ; ប្រូកស៊ី HTTP ធម្មតាមានការកំណត់ disabledSchemes ដោយឡែក។ តម្លៃលំនាំដើមរបស់ JDK សម្រាប់ការផ្ទៀងផ្ទាត់ Basic នៅ CONNECT គឺជាការត្រួតពិនិត្យគោលនយោបាយមួយបែបនោះ។

ឧទាហរណ៍ Jena ជាប្រវត្តិសាស្ត្រដែលប្រើ Apache HttpClient និង SimpleNTAuthenticator ជាកម្មសិទ្ធិរបស់ជំនាន់ transport ចាស់ជាង។ ប្រសិនបើប្រូកស៊ីសាជីវកម្មទាមទារយន្តការផ្ទៀងផ្ទាត់ដែលមិនមាននៅក្នុង transport បច្ចុប្បន្ន សូមរៀបចំការរួមបញ្ចូលដែលគាំទ្រជាមួយអ្នកគ្រប់គ្រងបណ្តាញ ជាជាងព្យាយាមញាត់វត្ថុផ្ទៀងផ្ទាត់ចាស់ទាំងនោះទៅក្នុងអ្នកបង្កើតសម័យថ្មី។

អត្ថបទពាក់ព័ន្ធ