SwingアプリケーションからWebアプリケーションにHashMapを送信したいとします.HashMapタイプです。 1つのString、ArrayList、およびByte Arrayが含まれています。 Webアプリケーションでこのマップを取得したいと思います。URLConnectionを使用してマップを送信および取得します。
スイング側のコード:
private static void sendMap()
{
System.out.println("Sending MAP");
byte[] bytes=getByteArray();
ArrayList<String> list =new ArrayList<String>();
list.add("ABC");
list.add("XYZ");
list.add("ABXY");
Map<String, Object> params=new HashMap<String, Object>();
params.put("Type", "Document");
params.put("bytes", bytes);
params.put("PartyNameList", list);
try {
URL url= new URL(iinkiturl+"/getMap?id=1234567");
URLConnection uc = url.openConnection();
uc.setDoOutput(true);
uc.setDoInput(true);
uc.setAllowUserInteraction(false);
DataOutputStream dstream = new DataOutputStream(uc.getOutputStream());
// The POST line
System.out.println(toByteArray(params));
dstream.write(params.toString().getBytes());
dstream.close();
InputStream in = uc.getInputStream();
int x;
while ((x = in.read()) != -1) {
System.out.write(x);
}
in.close();
BufferedReader r = new BufferedReader(new InputStreamReader(in));
StringBuffer buf = new StringBuffer();
String line;
while ((line = r.readLine()) != null) {
buf.append(line);
}
} catch(Exception exception)
{
exception.printStackTrace();
}
}
Webアプリケーション側:
InputStream in = request.getInputStream();
BufferedReader r = new BufferedReader(new InputStreamReader(in));
StringBuffer buf = new StringBuffer();
String line;
while ((line = r.readLine())!=null) {
buf.append(line);
}
System.out.println("Buffer ======= "+buf.toString());
出力:
バッファ======= {タイプ=ファイリング、PartyNameList = [ABC、 XYZ、ABXY]、bytes = [B @ 24c0f1ec}
このバッファからどのようにしてMapオブジェクトを取得できますか?または、これを達成するための代替ソリューションがありますか?前もって感謝します。
生産し、Javaでそれらを消費するXMLまたはJSON表記、およびAPIを参照してください... –
使用Arrays.toStringへバイト配列 –
を修正します。通常、プロジェクトはいくつかのフレームワーク上で構築されます。ほぼすべてが引数をエンコード/デコードするコンセプトを持っています。 –