curlコマンドをObjective-Cで同様の動作をさせたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hiro2220
記事: 3
登録日時: 12年前

curlコマンドをObjective-Cで同様の動作をさせたい

#1

投稿記事 by hiro2220 » 12年前

コード:

curl -X POST --data-binary @ローカルのjpeg画像ファイルパス -H "Content-Type: image/jpeg" "https://line.recognize.jp/v1/line/api/recognition/words?characters=english%2Bjapanese&api-key=APIキー"
このcurlコマンドをObjective-Cで使うためにはどうすればいいでしょうか?
特に--data-binaryあたりが分かりません。
iPhoneで撮影した画像を送信したいのですが、教えていただけると助かります。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: curlコマンドをObjective-Cで同様の動作をさせたい

#2

投稿記事 by h2so5 » 12年前

POSTで画像を送信するサンプルを見つけました。
http://stevegood.org/blog/2012/2/23/upl ... from-ios-5

hiro2220a

Re: curlコマンドをObjective-Cで同様の動作をさせたい

#3

投稿記事 by hiro2220a » 12年前

コード:

+ (BOOL)uploadImage:(UIImage *)image toURL:(NSURL *)url {

    NSData *imageData = UIImagePNGRepresentation(image);
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];
    
    NSMutableData *body = [NSMutableData data];
    [body appendData:imageData];
    [request setHTTPBody:body];
    [request setValue:@"image/png" forHTTPHeaderField:@"Content-Type:"];
        
    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
    
    NSLog(@"%@",returnString);
    
    return YES;
}
こんな感じに書き直してみましたがエラーが帰ってきます。
何がまずいのでしょうか?
curlコマンドは使ったことなくて、詳しく教えていただけると助かります。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: curlコマンドをObjective-Cで同様の動作をさせたい

#4

投稿記事 by h2so5 » 12年前

エラーの内容を書いてください。
そもそも、curlコマンドを使ったことがないとすると、同様の動作ができているか確認できないと思うのですが...

hiro2220
記事: 3
登録日時: 12年前

Re: curlコマンドをObjective-Cで同様の動作をさせたい

#5

投稿記事 by hiro2220 » 12年前

エラーはこちらです。

HTTPステータス 500 -

type 例外レポート
メッセージ
説明 The server encountered an internal error () that prevented it from fulfilling this request.
例外
javax.ws.rs.WebApplicationException: java.lang.IllegalArgumentException: Error parsing media type ': image/png'
com.sun.jersey.server.impl.model.HttpHelper.clientError(HttpHelper.java:265)
com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:91)
com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:77)
com.sun.jersey.spi.container.ContainerRequest.getMediaType(ContainerRequest.java:646)
com.sun.jersey.spi.container.servlet.WebComponent.filterFormParameters(WebComponent.java:832)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:407)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
原因
java.lang.IllegalArgumentException: Error parsing media type ': image/png'
com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:79)
com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:53)
javax.ws.rs.core.MediaType.valueOf(MediaType.java:119)
com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:89)
com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:77)
com.sun.jersey.spi.container.ContainerRequest.getMediaType(ContainerRequest.java:646)
com.sun.jersey.spi.container.servlet.WebComponent.filterFormParameters(WebComponent.java:832)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:407)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
原因
java.text.ParseException: Next event is not a Token
com.sun.jersey.core.header.reader.HttpHeaderReader.nextToken(HttpHeaderReader.java:98)
com.sun.jersey.core.impl.provider.header.MediaTypeProvider.valueOf(MediaTypeProvider.java:89)
com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:77)
com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:53)
javax.ws.rs.core.MediaType.valueOf(MediaType.java:119)
com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:89)
com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:77)
com.sun.jersey.spi.container.ContainerRequest.getMediaType(ContainerRequest.java:646)
com.sun.jersey.spi.container.servlet.WebComponent.filterFormParameters(WebComponent.java:832)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:407)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
注意 原因のすべてのスタックトレースは、Apache Tomcat/7.0.23のログに記録されています
Apache Tomcat/7.0.23

http://recognize.jp/reference/linewebapi.html#url
こちらのAPIを使いたいのですが、リクエストを送るためにHTTP POSTで送る必要があり、
質問をさせて頂きました。

hiro2220
記事: 3
登録日時: 12年前

Re: curlコマンドをObjective-Cで同様の動作をさせたい

#6

投稿記事 by hiro2220 » 12年前

http://yama104i.ti-da.net/e3515883.html

こちらのサイトを参考に自己解決致しました。
有難うございました。

閉鎖

“C言語何でも質問掲示板” へ戻る