0

http 経由で xml コンテンツを送信する必要があります。すでにいくつかの方法を試しましたが、うまくいきません。パラメータは次のようになります {"action"=>"login", "controller"=>"session", "user"=>{"username"=>"123@gmail.com", "password"=>" [FILTERED]"}} 一方、そのアクションとコントローラーパラメーターはサーバーで事前定義されています(つまり、ユーザータグ内でユーザー名とパスワードの両方が来る必要があります...

XML コード ブロックは次のようになります。

             <?xml version=\"1.0\" encoding=\"UTF-8\"?>
             <user>
             <username>xxx</username>
             <password>yyyy</password>
             </user>

私のコードは

String param1 = null;
param1 = URLEncoder.encode(charset);

String param2 = null;
try {
    param2 = URLEncoder.encode("x@yyy.com", charset);
} catch (UnsupportedEncodingException e3) {
    // TODO Auto-generated catch block
    e3.printStackTrace();
} 
String param3 = null;
try {
    param2 = URLEncoder.encode("xxx", charset);
} catch (UnsupportedEncodingException e4) {
    // TODO Auto-generated catch block
    e4.printStackTrace();
}

String query = String.format("user=&username=%s&password=%s", param1, param2,param3);*/

URLConnection urlConnection = null;
try {
    urlConnection = new URL(url).openConnection();
} catch (MalformedURLException e2) {
    // TODO Auto-generated catch block
    e2.printStackTrace();
} catch (IOException e2) {
    // TODO Auto-generated catch block
    e2.printStackTrace();
}
urlConnection.setUseCaches(false);
urlConnection.setDoOutput(true); // Triggers POST.
//urlConnection.setRequestProperty("accept-charset", charset);
urlConnection.setRequestProperty("content-type", "application/xml");

OutputStreamWriter writer = null;
try {
    writer = new OutputStreamWriter(urlConnection.getOutputStream());
    writer.write(query); // Write POST query string (if any needed).
} catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} finally {
    if (writer != null) try { writer.close(); } catch (IOException logOrIgnore) {}
}

try {
    InputStream result = urlConnection.getInputStream();
} catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
4

0 に答える 0