Àṣìṣe aṣojú HttpClient 4: a kò ṣètìlẹ́yìn fún http protocol
Jẹ́ kí iṣẹ́ HTTP tí ó rọrùn wà nínú àkọsílẹ̀ Apache HttpClient 4 àkànṣe nígbà tí ọ̀nà HTTPS bá kọ́kọ́ so mọ́ aṣojú HTTP.
Nínú ètò Apache HttpClient 4, ibi-àfojúsùn HTTPS kò túmọ̀ sí pé gbogbo ìsopọ̀ bẹ̀rẹ̀ pẹ̀lú TLS. A máa ń dé ọ̀dọ̀ aṣojú HTTP tí ó wọ́pọ̀ nípasẹ̀ ìsopọ̀ tí a kò fi ààtò ṣe, lẹ́yìn náà CONNECT ṣí ojú-ọ̀nà tí TLS sì di ìpele sí ibi-àfojúsùn.
Tí olùdarí ìsopọ̀ àkànṣe bá forúkọ https nìkan, ìfo nínú aṣojú àkọ́kọ́ lè já lulẹ̀ pẹ̀lú UnsupportedSchemeException: http protocol is not supported.
Fún API 4.5, fi iṣẹ́ méjèèjì kún nígbà tí a bá ń kọ́ olùdarí yẹn:
var registry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.getSocketFactory())
.register("https", tlsFactory)
.build();
var manager = new PoolingHttpClientConnectionManager(registry);
var client = HttpClients.custom()
.setConnectionManager(manager)
.setProxy(new HttpHost("proxy.example.net", 8080, "http"))
.build();
tlsFactory ni SSLConnectionSocketFactory tí ó wà tẹ́lẹ̀ fún ètò náà, pẹ̀lú ìwádìí ìgbẹ́kẹ̀lé àti orúkọ agbàlejò tí a wéwèé. Àwọn irú tí a fi hàn jẹ́ ti àwọn àkópọ̀ org.apache.http ti Apache 4. Ẹ̀ka yìí gbà pé Java lè dámọ̀ irú àwọn oníyípadà àdúgbò; kóòdù Java àtijọ́ lè lo irú tí ó yé.
So olùdarí tí a tún ṣe mọ́ ẹrù ìsopọ̀ tí a ń lò ní ti gidi fún ìbéèrè náà. Fún ìbéèrè HTTPS ti gbogbo ènìyàn tí a gbà láàyè láìsí ìjẹ́rìí aṣojú, àkọsílẹ̀ HTTP kan láti àkójọ aṣojú HTTP lè kún àdírẹ́sì aṣojú HttpHost. Ṣíṣe ìṣètò builder mìíràn kò ní mú ẹrù ìsopọ̀ tí a ti kọ́ yẹ̀ lórí.
Tún ṣàyẹ̀wò ẹ̀tọ́ builder: HttpClientBuilder ṣàkọsílẹ̀ pé olùdarí ìsopọ̀ tí a fún ní kedere lè borí àwọn ìwọlé ìṣètò SSL ọ̀tọ̀ọ̀tọ̀ rẹ̀. Fi àwọn iṣẹ́ tí a nílò sínú àkọsílẹ̀ olùdarí dípò kí o gbà pé ìpè setSSLContext tí ó tẹ̀lé yóò rọ́pò inú rẹ̀.
Ìwádìí yìí kan àkọsílẹ̀ àwòrán-ìlànà àdúgbò. Ìpèníjà ìjẹ́rìí aṣojú tàbí ibi-àfojúsùn tí a kọ̀ jẹ́ àbájáde tí ó tẹ̀lé, tí ó yàtọ̀. Pa àkọsílẹ̀ iṣẹ́ méjèèjì mọ́ bí o ṣe ń ṣèwádìí àwọn ìdáhùn yẹn.