আইফোন থেকে কীভাবে এসওএপি পরিষেবাগুলি অ্যাক্সেস করবেন


224

আমি আইফোনের জন্য একটি অ্যাপ্লিকেশন বিকাশ করার পরিকল্পনা করছি এবং সেই অ্যাপ্লিকেশনটিতে বেশ কয়েকটি এসওএপি পরিষেবা অ্যাক্সেস করতে হবে। আইফোন এসডিকে কিছু বেসিক চেকিং করার সময় আমি এসওএপি পরিষেবাগুলি অ্যাক্সেসের জন্য কোনও সমর্থন খুঁজে পাচ্ছিলাম না, কিছুটা গুগলিং এই সিদ্ধান্তে পৌঁছেছে যে আইফোন এসডিকে এসওএপি-র কোনও সমর্থন নেই।

সুতরাং আমি যদি এই অ্যাপটি তৈরি করতে চাই তবে আমাকে আইফোন থেকে এসওএপি পরিষেবাগুলি অ্যাক্সেস করার একটি পদ্ধতির সাথে আসতে হবে। সেরা পদ্ধতির কি হবে? কোন সেরা অনুশীলন? এসওএপি পরিষেবাগুলি অ্যাক্সেস করতে আইফোন এসডিকে উপস্থিত কার্যকারিতা ব্যবহার করে কেউ ইতিমধ্যে একটি লাইব্রেরি লিখেছেন?

(যে পরিষেবাটি আমার অ্যাক্সেস করতে হবে সেটি অন্য পক্ষ দ্বারা প্রকাশ করা হয়েছে এবং তারা কেবল এটি এসওএপি হিসাবে প্রকাশ করে, দুর্ভাগ্যবশত এটি অন্য ধরণের ইন্টারফেসে স্যুইচ করার বিকল্প নয় (যেমন REST ভিত্তিক এপিআই))।

Gero


9
হাই গিরো, আপনি কীসের সাবান পরিষেবাটি আপনার অ্যাপ্লিকেশনটির জন্য ব্যবহার করেছেন? যেমন আপনি কোনও উত্তর সঠিকভাবে উল্লেখ করেন নি।
আমেয়া

3
আপনি পরিষেবাটি ব্যবহার করার পরে দয়া করে অন্যদের জন্য ভবিষ্যতের রেফারেন্সের জন্য টিউটোরিয়ালগুলি পোস্ট করুন।
ভিনিষ টিপি

উত্তর:


52

একটি শব্দ: না।

ঠিক আছে স্পষ্টতই এটি আসল উত্তর নয়। তবে তবুও এসওএপি সর্বদা এড়ানো উচিত। ;-) আইফোন এবং ওয়েব পরিষেবার মধ্যে কোনও প্রক্সি সার্ভার যুক্ত করা সম্ভব? সম্ভবত এমন কিছু যা আপনার জন্য REST কে SOAP এ রূপান্তরিত করে?

আপনি CSOAP চেষ্টা করতে পারেন , একটি SOAP লাইব্রেরি যা libxML2 (যা আইফোন এসডিকে অন্তর্ভুক্ত) উপর নির্ভর করে depends

আমি ওএসএক্সের জন্য নিজের এসওএপি ফ্রেমওয়ার্ক লিখেছি । তবে এটি সক্রিয় ভাবে নিয়ন্ত্রিত হয় না এবং আইফোন পোর্ট করতে কিছু সময় প্রয়োজন হবে (আপনার সাথে NSXML প্রতিস্থাপন করতে হবে TouchXML একটি শুরুর জন্য)


11
আপনি কি এই বিবৃতিটি বিশদভাবে বলতে পারেন "তবে তবুও এসওএপি সব ক্ষেত্রেই এড়ানো উচিত"
উইলএফ

9
কেবল কারণ সাবানটি তার প্রয়োগের ক্ষেত্রে যথাযথ নয় তার অর্থ এটি যথাযথ নয়, এমন অনেকগুলি প্রয়োজন রয়েছে যা সবচেয়ে বেশি ভাল প্যাক্রেসিভের বাইরে চলে যায়
অ্যান্টনি মেইন

11
@ এসসওয়া - একেবারে কোনও সমর্থনকারী প্রমাণ বা প্রতিরক্ষা ছাড়াই সম্ভাব্য দরকারী উত্তর পোস্ট করার জন্য বঞ্চিত।
ডগডাব্লু

12
এটি "এটি ডিফল্টরূপে সরবরাহ করা হয়নি কারণ এটি ব্যবহার করবেন না" এর প্রযুক্তিগত সমতুল্য - আপনাকে এসওএপি বা কোনও পরিষেবা দ্বারা সরবরাহিত অন্য কোনও প্রক্রিয়া ব্যবহার না করার কোনও আসল প্রযুক্তিগত কারণ নেই।
পিটেশ

9
এখানে কমপক্ষে একটি উত্তর দেওয়া হল - এসওএপি রিস্টের তুলনায় খুব হাই-ওভারহেড প্রোটোকল। সমস্ত নেমস্পেসিং এবং বৈধতা যাচাইকরণ এবং এর ফলে আপনার বার্তায় এক টন অতিরিক্ত অক্ষর যুক্ত হয় এবং আপনি ঠিক 3 জি এর মতো উচ্চ-বিলম্বিত, সম্ভাব্য ধীর নেটওয়ার্কের মাধ্যমে এড়াতে চান। যদি আপনি গ্যারান্টি দিতে পারেন যে আপনার অ্যাপ্লিকেশনটি কেবলমাত্র 4 জি পরিবেশে দুর্দান্ত সিগন্যালের সাথে ব্যবহার করা হবে, বা কেবলমাত্র ওয়াইফাইতে, এটি আরও বাড়িয়ে তুলতে পারে। তবে সাধারণভাবে মোবাইল নেটওয়ার্কিংয়ে কম বেশি হয়।
ভিনিল শাহ

7

আমার সমাধানটি ছিল একটি প্রক্সি সার্ভারটি REST গ্রহণ করা, এসওএপি অনুরোধ জারি করা এবং পিএইচপি ব্যবহার করে ফলাফল ফেরত দেওয়া।

প্রয়োগের সময়: 15-30 মিনিট।

সর্বাধিক মার্জিত নয়, তবে শক্ত।


4
তুমি কী করে? কোন নথি। tnx
বসন্ত

3
আমি রহস্যময় উত্তর উত্তর পছন্দ। কিভাবে এই upvated ছিল?
gdbj

@ জিডিবিজে কারণ আরইএসটি এবং এসওএপি-র মধ্যে 1: 1 রূপান্তরটি স্ব-ব্যাখ্যামূলক হওয়া উচিত ...
ম্যাজিক অক্টোপাস উর্ন

1
এটি কী, তবে কীভাবে, কেন লোকেরা এখানে আসে তার প্রশ্নের উত্তর দেয় না। বাস্তবায়নটি এখানে কী হবে তার উত্তরে আমি এখনও আগ্রহী, বিশেষত যদি এটি এত সহজ।
gdbj

4

অবজেক্টিভ-সি এর মাঝে মাঝে এসওএপি স্টাইল অনুরোধগুলি করার প্রয়োজনের সাথে মোকাবিলা করার জন্য আমি historতিহাসিকভাবে আমার নিজের অ্যাক্সেসটিকে নিম্ন স্তরে (এক্সএমএল প্রজন্ম এবং বিশ্লেষণ) ঘুরিয়েছি। এটি বলেছিল, এসওএপক্লিয়েন্ট ( সোপক্লিয়েন্ট ) নামে একটি গ্রন্থাগার পাওয়া যায় যা ওপেন সোর্স (বিএসডি লাইসেন্সধারী) এবং গুগল কোডে উপলব্ধ ( ম্যাক-সাবানক্লিয়েন্ট ) আগ্রহী হতে পারে।

আমি এর ক্ষমতা এবং কার্যকারিতাটির সত্যতা দেব না, কারণ আমি এটি কখনও ব্যবহার করি নি বা এটির এপিআইয়ের সাথে কাজ করতে হয়নি, তবে এটি উপলব্ধ এবং আপনার প্রয়োজনের উপর নির্ভর করে আপনার জন্য একটি দ্রুত সমাধান সরবরাহ করতে পারে।

অ্যাপলের এক সময় ডাব্লুএস-মেকস্টাবস নামে একটি খুব ভাঙা ইউটিলিটি ছিল। আমি মনে করি না এটি আইফোনটিতে উপলব্ধ, তবে আপনি এটি ওপেন-সোর্স লাইব্রেরিতে প্রতিস্থাপনের উদ্দেশ্যে আগ্রহীও হতে পারেন - কোডটি কোনও এসওএপি ক্লায়েন্টের সাথে কথোপকথনের জন্য উদ্দেশ্য-সি তৈরি করে। আবার, আমি এটি ব্যবহার করি নি - তবে আমি এটি আমার নোটগুলিতে চিহ্নিত করেছি: wsdl2objc


ধন্যবাদ, আমি wsdl2objc ব্যবহার করার চেষ্টা করেছি। ডাব্লুএসডিএল থেকে অবজেক্টিভ কোডের প্রজন্ম কাজ করে, তবে এটি (যেমন প্রত্যাশা করা) সরাসরি আইফোন এসডিকে বিপরীতে সংকলন করে না। আমি উত্সগুলিকে কিছুটা ঝাঁকুনির চেষ্টা করেছি, তবে আমি সমাধান করতে পারিনি এমন একগুচ্ছ ত্রুটি দিয়ে শেষ করেছি
Gero

2

আপনি http://www.wsdl2code.com খুঁজে পাওয়া একটি সরঞ্জাম ব্যবহার করে আপনি সংযোগ করতে পারেন

SampleServiceProxy *proxy = [[SampleServiceProxy alloc]initWithUrl:@"YOUR
        URL" AndDelegate:self];

[proxy GetDouble];
[proxy GetEnum];
[proxy getEnum:kTestEnumTestEnum2];
[proxy GetInt16];
[proxy GetInt32];
[proxy GetInt64];
[proxy GetString];
[proxy getListStrings];

2

এখানে একটি সুইফট 4 নমুনা কোড রয়েছে যা এসওএপি পরিষেবা ফর্ম্যাট ব্যবহার করে এপিআই কলিং কার্যকর করে।

   func callSOAPWSToGetData() {

        let strSOAPMessage =
            "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
                "<soap:Body>" +
                "<CelsiusToFahrenheit xmlns=\"http://www.yourapi.com/webservices/\">" +
                "<Celsius>50</Celsius>" +
                "</CelsiusToFahrenheit>" +
                "</soap:Body>" +
        "</soap:Envelope>"

        guard let url = URL.init(string: "http://www.example.org") else {
            return
        }
        var request = URLRequest.init(url: url)
        let length = (strSOAPMessage as NSString).length
        request.addValue("application/soap+xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
        request.addValue("http://www.yourapi.com/webservices/CelsiusToFahrenheit", forHTTPHeaderField: "SOAPAction")
        request.addValue(String(length), forHTTPHeaderField: "Content-Length")
        request.httpMethod = "POST"
        request.httpBody = strSOAPMessage.data(using: .utf8)

        let config = URLSessionConfiguration.default
        let session = URLSession(configuration: config)
        let task = session.dataTask(with: request) { (data, response, error) in
            guard let responseData = data else {
                print("Error: did not receive data")
                return
            }
            guard error == nil else {
                print("error calling GET on /todos/1")
                print(error ?? "")
                return
            }
            print(responseData)
            let strData = String.init(data: responseData, encoding: .utf8)
            print(strData ?? "")
        }
        task.resume()
    }

0

এই লিঙ্কটি এবং তাদের রোডম্যাপটি এখানে দেখুন । তারা পথে আরও | সি রয়েছে এবং এটি তাদের ওয়েব পরিষেবাদির সাথে সংযুক্ত হতে পারে, এতে সম্ভবত এসওএপি অন্তর্ভুক্ত থাকে (আমি অবশ্যই ভিসিএল সংস্করণ ব্যবহার করি যা এটি অবশ্যই অন্তর্ভুক্ত করে)।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.