質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

2501閲覧

swiftでAPIを叩き、その戻り値を参照(HashMap型)

tn_mrmn

総合スコア16

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/15 08:29

編集2017/02/15 08:53

最近swiftでiOSアプリの開発を始めた者です。

タイトルの通りですが、swiftからJavaで作られたシステムのURLにPOSTし、その戻り値(HashMap型)をswift側で参照したいのですが、
どのような方法で行うのがよろしいでしょうか。

sendAsynchronousRequestを使って、別のfunctionに戻り値を受け取らせる方法を試みたのですが、型の違いでうまくできません。

スマートな方法ご存知の方いらっしゃったらご教示いただきたいです。

ちなみにJava側のコードはこのような形です。

Java

1public HashMap<String, Object> loginSphone() throws Exception { 2 HashMap<String, Object> res = new HashMap<String, Object>(); 3 res.put("code", 200); 4 return res; 5}

【バージョン】
swift3

【環境】
XCode8.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2017/02/15 08:44

「その戻り値」がHashMap型とおっしゃられておりますが、具体的にはなんですか?Javaのクラスということではないのですよね?一般的には、jsonやXMLでサーバから返却してもらい、それをswift側でDictionaryや配列に設定することになると思いますよ。
tn_mrmn

2017/02/15 08:54

コメントいただき誠にありがとうございます。Java側のコードの追記をしました。
t_obara

2017/02/15 09:51

Webサーバはなんですか?http://stackoverflow.com/questions/11107875/jax-ws-how-to-make-a-soap-response-return-a-hashmap-object この辺りを見ると、Sorpで返却されるのでしょうか? 単にそのURLをブラウザでアクセスすると、何が返却されるかをご覧になれば、swift側で何をしなければいけないのかが明確になると思われます。あるいは、サーバ側でswiftが扱いやすい形式に変換して返却するかでしょうか。
tn_mrmn

2017/02/16 03:18

OSはLinuxです。ブラウザでURLを直接叩き、戻り値を確認してみましたが、どうやらJSONで返却されていたようでした。そのデータをswift側でprintで見たところ、Optional(208 bytes)となっておりました。これをうまく取り出す方法があればお教えいただければと思います。
guest

回答2

0

JSONなら、JSONSerialization.jsonObject(with:options:)を使って下さい。

API Reference
jsonObject(with:options:)

投稿2017/02/16 09:39

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tn_mrmn

2017/02/22 08:35

JSONに関してそのような変換方法があるのですねありがとうございます。 本日確認しやってみたらできました。 型についてもっと理解を深めるように致します。
guest

0

ベストアンサー

追記への返信(?)になります。

Optional(208 bytes) という内容が返却されるとのことなので、一度Stringにしてみていただけますでしょうか?
次のようにしてみてください。なお、レスポンスを仮に response という変数に持っているとします。

swift

1print(String(data: response, encoding: .utf8))

投稿2017/02/16 09:25

keisei_1092

総合スコア104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tn_mrmn

2017/02/22 08:36

こちらの方法に関しても試してみたらできました。ありがとうございます。 JSONの扱いに関し、もっと理解を深めるようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問