2011-07-26 3 views
7

मैं माइक्रोसॉफ्ट सी # का उपयोग कर माइक्रोसॉफ़्ट सी # का उपयोग कर सफलतापूर्वक कनेक्ट कर रहा हूं। मुझे एक उपयोगकर्ता नाम, पासवर्ड (सी # कोड में) देना है; और सिस्टम के प्रमाणपत्रों के "रूट प्रमाणपत्र प्राधिकरण" खंड में प्रमाणपत्र (.cer प्रारूप में) स्थापित करें।PHP के साथ एक वेब सेवा से कनेक्ट करने के लिए केवल उपयोगकर्ता नाम, पासवर्ड और प्रमाणपत्र प्राधिकरण

मैं PHP में ऐसी वेब सेवा से कैसे कनेक्ट कर सकता हूं? कारण मैं पूछता हूं कि मैंने देखा है कि सभी विधियों (जैसे wsdl2php, जो एक सोप क्लाइंट सबक्लास बनाता है), एसएसएल प्रमाणपत्र, एसएसएल कुंजी फ़ाइल और एसएसएल कुंजी पासफ्रेज जैसी विभिन्न चीजें मानते हैं।

तो यह सब मुझे भ्रमित करता है। मुझे यकीन नहीं है कि कहां जाना चाहिए। मुझे यकीन नहीं है कि मेरा "रूट प्रमाणपत्र प्राधिकरण" (.cer फ़ाइल) कहाँ जाना चाहिए, और जहां उपयोगकर्ता नाम और पासवर्ड जाना चाहिए। कोई विचार?

उत्तर

5

सभी whith soapclient और stream_context_create का उपयोग कर ssl options

<?php 
$context = stream_context_create(array(
    'https' => array(
    'cafile' => '/path to file', 
    'verify_peer' => true 
))); 

new soapclient("https://localhost/index.php?wsdl",array(
    'login'=>'admin', 
    'password'=>'passss', 
    'stream_context'=> $context 
)); 

इसे करने के लिए साबुन में असामान्य नहीं है किया जा सकता है नहीं का उपयोग http प्रमाणन लेकिन सिर्फ एक साबुन-कॉल, documnetation

यह हो सकता है के लिए आवश्यक है php clases को soaptypes को मैप करने के लिए क्लासमैप का उपयोग करके कक्षाओं का उपयोग करने के लिए पुरस्कृत करने के लिए पुरस्कृत

+0

क्या आपके पास कुछ कोड है जो NuSOAP के साथ ऐसा कर सकता है? अगर मैं आपके कोड का उपयोग करता हूं, तो मुझे हमेशा यह त्रुटि मिलती है: PHP चेतावनी: सोप क्लाइंट :: __ doRequest(): एसएसएल: लाइन 22 पर पीयर द्वारा कनेक्शन//ssers/enchilada/Desktop/test.php में कनेक्शन रीसेट करें PHP घातक त्रुटि: Uncaught SoapFault अपवाद: [HTTP]/heads/enchilada/Desktop/test.php:22 – Enchilada

+1

में http शीर्षलेख लाने में त्रुटि libssl, curl, libxml (अगर नहीं। और linux) स्थापित करें और php अद्यतन करें, इस त्रुटि को इंगित करने वाली बग हैं, तो जोड़ने का प्रयास करें उदाहरण निर्माण में ट्रेस विकल्प, अगर यह काम नहीं करता है wireshark – borrel

+0

मैं इन कोशिश करूँगा। धन्यवाद। यदि यह अभी भी काम नहीं करता है तो मैं वापस आऊंगा। – Enchilada

0

आमतौर पर आप नियमित रूप से SSL का उपयोग कर एक वेब सेवा को कॉल कर रहे यदि आपका यूआरएल दिखेगा की तरह:

https://username:[email protected]/mywebservice.php

तो फिर वहाँ SSL प्रमाणपत्र का मुद्दा है। मैं एसएसएल संरक्षित एसवीएन वेब फ्रंट से पढ़ने के समान कुछ उपयोग कर रहा हूं। मुझे सर्वर में लॉग इन करने के अलावा किसी भी अन्य समाधान के बारे में पता नहीं है जो आपके वेबसर्वर (अपाचे/आईआईएस) चला रहा है और प्रमाणपत्र को मैन्युअल रूप से स्वीकार कर रहा है। एसवीएन के मामले में आप चेकआउट कर सकते हैं और यह आपको प्रमाण पत्र स्वीकार करने के लिए कहेंगे। मुझे पूरी तरह से यकीन नहीं है कि यह एक सादे HTTPS अनुरोध के लिए कैसे काम करेगा, लेकिन शायद आप ब्राउज़र में webservice लोड करके प्रमाण पत्र प्राप्त कर सकते हैं? (या यदि आप लिनक्स चलाने के लिए भाग्यशाली हैं तो wget या कुछ फैंसी का उपयोग करें)

इसके अलावा, क्या आपका कोड PHP कोड या सी # कोड है? यदि यह सी # है तो आपको पूरी तरह से कुछ और करने की आवश्यकता हो सकती है।