2009-06-04 13 views
7

में HTTP प्रमाणीकरण मैं एक जे 2 एमई ऐप बनाने की कोशिश कर रहा हूं, जो HttpConnection कनेक्टर का उपयोग कर वेबसर्वर से बात करता है।जे 2 एमई

जब मैं वेबसर्वर करने के लिए बात कर रहा हूँ, मैं, बुनियादी HTTP प्रमाणन, जो आम तौर

http://username:[email protected]/rest/api/method

की तरह लेकिन जे 2 एमई में चला जाता है का उपयोग कर जब मैं इस फॉर्म की एक यूआरएल का निर्माण प्रमाणित करने के लिए है, यह नहीं करता है ' टी काम नहीं

मैं भी अनुरोध संपत्ति जोड़ने की कोशिश की, hc = (HttpConnection) Connector.open(url); hc.setRequestProperty("User", "alagu"); hc.setRequestProperty("pass", "mypassword");

लेकिन काम नहीं किया।

क्या किसी ने पहले j2me आधारित HTTP auth किया है? अग्रिम में धन्यवाद।

+0

हे हाय अलागु, आपने इस समस्या को कैसे हल किया। आपने बेसिक ऑथ कैसे किया। क्या आप कृपया मुझे बता सकते हैं कि बुनियादी लेख कैसे किया जाए। j2me में ... कृपया –

+0

@ साजिदशेख मैंने wds के समाधान की कोशिश की और यह काम किया। – Alagu

उत्तर

11

यह जे 2 एमई के मूल प्रमाणीकरण के लिए कोई समर्थन नहीं हो सकता है, मैं गलत हो सकता हूं। यदि आप अनुरोध में प्रमाणीकरण शीर्षलेख को बस सेट करना चाहते हैं तो आपको शायद एक अलग शीर्षलेख की आवश्यकता होगी, जिसका आप उपयोग कर रहे हैं।

से

rfc: चरित्र, [7] इनकोडिंग स्ट्रिंग एक बेस 64 के भीतर:

प्राधिकरण प्राप्त करने के लिए, ग्राहक उपयोगकर्ता आईडी और पासवर्ड, एक भी पेट के ("") द्वारा अलग भेजता है साख।

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

:

[...]

उपयोगकर्ता एजेंट उपयोगकर्ता id "अलादीन" और पासवर्ड भेजने के लिए चाहता है "खुला तिल", यह निम्नलिखित हेडर फ़ील्ड का प्रयोग करेंगे तो बस स्ट्रिंग "उपयोगकर्ता: पासवर्ड" बनाएं, बेस 64 इसे एन्कोड करें और फिर setRequestProperty("Authorization", "Basic "+ encodedUserAndPass)

+0

धन्यवाद wds, यह काम किया! – Alagu

+4

मामलों को और अधिक मज़ेदार बनाने के लिए, जे 2 एमई में एमआईडीपी 2.0 में बेस 64 एन्कोडर शामिल नहीं है। कुछ विक्रेता स्वयं को प्रदान करते हैं, इसलिए उन्हें आयात करने में सावधान रहें (सूर्य के डब्ल्यूटीके में एक है, लेकिन यह केवल डब्ल्यूटीके में है)। इसकी प्रकृति से, आप अपने आप को शामिल कर सकते हैं, जैसे: http://java.sun.com/docs/books/j2mewireless/examples/src/examples/netclient/BasicAuth.java –

3

अविश्वसनीय, यह एक आकर्षण की तरह काम करता है:

String url = "hppt://www.example.com"; 
HttpConnection hc = (HttpConnection) Connector.open(url); 
hc.setRequestProperty("Authorization", "Basic "+ BasicAuth.encode("user", "password")); 
1

मैंने बाउंसी कैसल क्रिप्टोग्राफिक लाइब्रेरी का बेस 64 एनकोडर/डिकोडर का उपयोग किया। जावा एमई/जे 2 एमई एपीआई द्वारा निर्धारित कई सीमाओं पर काबू पाने में यह बहुत शक्तिशाली है। यह ओपन-सोर्स है और यह जावा एमई और एंड्रॉइड दोनों के लिए काम करता है।

संबंधित मुद्दे