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

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

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

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Q&A

解決済

2回答

11265閲覧

javaでバイナリデータをPOSTする

uer03108

総合スコア194

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

0グッド

1クリップ

投稿2017/08/26 04:39

表題の通りなのですが、出来るでしょうか(出来るとは思うのですが)。
下記、POST用の雛形になります。

URL url = new URL(urlString); HttpURLConnection uc = (HttpURLConnection) url.openConnection(); // URLConnection uc = url.openConnection(); //POST可能にする uc.setRequestMethod("POST"); uc.setDoOutput(true); //送信許可 uc.setDoInput(true); //受信許可 //リクエストヘッダ uc.setRequestProperty("User-Agent", "@IT java-tips URLConnection"); uc.setRequestProperty("Accept-Language", "ja"); //リクエストボディ OutputStream os = uc.getOutputStream(); //POST用のOutputStreamを取得 String postStr = "data_1=bar1&data_2=bar2"; //POSTするデータ PrintStream ps = new PrintStream(os); ps.print(postStr); ps.close(); //POSTした結果を取得 InputStream is = uc.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String s; while ((s = reader.readLine()) != null) { System.out.println(s); } reader.close();

リクエストボディに直接バイナリデータをwriteする方法もあるようですが、
パラメータ名 = バイナリデータ(barの部分)
の場合を想定しています。

ご回答、お願い致します。

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

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

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

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

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

Stripe

2017/08/27 06:04

サーバー側はどうなっているんですか? バイナリデータといってもサーバ側で受け取れる形にする必要があります。
uer03108

2017/09/11 08:18

回答有難うございます。 twitterAPIで、POSTパラメータの1つに 「バイナリ形式またはbase64形式で送信する」 と書かれていたので、直接、バイトデータを送信できるのかなと思い、 質問させて頂きました。
guest

回答2

0

バイナリ形式=Content-Type:multipart/form-dataで送信するということだと思います。

投稿2017/09/11 09:16

mr-hisa-child

総合スコア294

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

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

0

ベストアンサー

クエリ文字列の形式(A=1&B=2のような形式)でバイナリデータを送るには、一度バイナリデータを何らかの文字列のデータに置き換える必要があります。一般的にはBASE64形式の文字列に変換して、クエリ文字列として送信、サーバ側で逆変換してバイナリに戻す、という方法が取られます。

Java8からはBase64というクラスが用意されていますので、そちらでサンプルを書きます。

Java

1// 送信側 2byte[] data_1 = {(byte)0, (byte)1, (byte)2}; 3byte[] data_2 = {(byte)3, (byte)4, (byte)5}; 4String postStr = 5 "data_1=" + Base64.getEncoder().encodeToString(data_1) 6 "&data_2=" + Base64.getEncoder().encodeToString(data_2) 7 ;

受信側の処理は言語やエンジンに何を使われているのか記載がないので、Base64デコードというキーワードで自分で調べてみてください。

投稿2017/09/05 00:38

masaya_ohashi

総合スコア9206

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

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

uer03108

2017/09/11 08:18

回答有難うございます。 twitterAPIで、POSTパラメータの1つに 「バイナリ形式またはbase64形式で送信する」 と書かれていたので、直接、バイトデータを送信できるのかなと思い、 質問させて頂きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問