MySQLデータベースを備えたAndroidアプリケーションがあります。Androidタブレットに入力された行は、サーバー上でMySqlと同期する必要があります。サーバーに書き込まれると、ローカルデータベースを更新するために、サーバーの一意の整数をタブレットに返す必要があります。そうすれば、クライアントをサーバーにx-refします。現在、各行に対してPUTを実行し、応答でサーバーIDの場所を使用することで機能します。ただし、大量の更新がある場合は時間がかかり、1行ごとに新しいHttpConnectionが開くときに挿入されます。更新を1つのXML文字列にグループ化し、各クライアントIDのserverIDのxreferenceで返されるXMLファイルを取得できるようにしたいと思います。ただし、応答でXMLを送信する方法が見つかりません。URIのみです。私の接続コードは
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, Const.HTTP_CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpParameters, Const.HTTP_SOCKET_TIMEOUT);
DefaultHttpClient client = new DefaultHttpClient(httpParameters);
client.getCredentialsProvider().setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("xxxxx","xxxxx")); // TODO Change to logged user name
HttpPut put = new HttpPut(uri);
StringEntity entity = new StringEntity(xml);
entity.setContentType("application/xml");
put.setEntity(entity);
HttpClientParams.setRedirecting(put.getParams(), false);
HttpResponse response = client.execute(put);
switch (response.getStatusLine().getStatusCode()){
case 200:
case 201:
location = response.getLastHeader("Location").getValue();
key = location.substring(location.lastIndexOf("/")+1);
break;
case 401:
throw new RuntimeException("Authorisation Failed");
default:
throw new RuntimeException("Failed to Create Data Record on Server");
}
そしてサーバー上
if (flight.getClientFlightId()!=0){
if (insertFlight(userId)){
xref += "<clientId>"+flight.getClientFlightId()+"</clientId><serverId>"+flight.getServerFlightId()+"</serverId>";
}
}
xref +="</xref>";
response = Response.created(URI.create(xref)).build();
助けてくれる人はいますか?