ユーザーによるメッセージを xml ファイル データベースに挿入しようとしています。
私のクライアントはAndroid上にあり、php.Php上のサーバーはxmlにデータを挿入する責任があります。
ユーザーはテキストボックスにメッセージを書き込み、送信を押します。テキストはリストビューに1回挿入されますが、データベースには複数回挿入されます。
php
Androidアプリから送信しているのと同じ引数を渡すことで、xmlファイルに値を直接挿入しようとしましたが、正常に動作します。値は1回だけ挿入されます。
asynctask
リストビューに挿入し、データベースに挿入する呼び出しを行う送信ボタンのコードは次のとおりです。
final Button Submit= (Button) findViewById(R.id.SubmitButton);
Submit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String data=chatbox.getText().toString();
HashMap<String,String> hashMap=new HashMap<String,String>();
hashMap.put("You",chatbox.getText().toString()); //insert username(You) value in chatbox to hashmap
hashMap.put(HandleJSON.Key_username, "You");
hashMap.put(HandleJSON.Key_messageText, data);
hashMap.put(HandleJSON.Key_messageDate, UserAdminChatActivity.LastShowingChatDate);
HandleJSON.newObject=false;
adapter.hashmap.add(adapter.hashmap.size(), hashMap);
adapter.notifyDataSetChanged();
new InsertAdminChat().execute();
}});
データベースにデータを挿入する関数をasynctask
呼び出すクラスを次に示します。httprequest
public class InsertAdminChat extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... void1) {
sendHttpRequest("set", "admin", "You" ,chatbox.getText().toString(),clientEmail,"");
return null;
}
}
これは httpRequest 関数です。
private String sendHttpRequest(String action,String callFrom,String userName,String chatText,String email,String dateChat)
{
httpRequest=new HttpRequest(action,callFrom,userName,chatText,email,dateChat);
String data=httpRequest.ExecuteRequest();
Log.i("mojiiiiii",data);
httpRequest.ExecuteRequest();
return data;
}
これは、HTTPREQUEST
httprequest 関数によって呼び出され、データベースにデータを挿入するために使用される私のクラスです。
public class HttpRequest {
private final String action;
private final String callFrom;
private final String userName;
private final String chatText;
private final String email;
private final String dateChat;
private HttpClient httpclient;
private HttpGet httpget;
private HttpResponse response ;
private HttpEntity entity;
public HttpRequest(String action,String callFrom,String userName,String chatText,String email,String dateChat)
{
this.action=action;
this.callFrom=callFrom;
this.chatText=chatText;
this.email=email;
this.userName=userName;
this.dateChat=dateChat;
httpclient= new DefaultHttpClient();
httpget = new HttpGet("http://10.116.25.189/php/Chat/xmlManipulator.php?" +
"action="+this.action+
"&username="+this.userName+
"&chatText="+this.chatText+
"&email="+this.email+
"&callfrom="+this.callFrom+
"&dateChatToRetrieve="+URLEncoder.encode(this.dateChat)); //test purposes k liye muazzam
}
public String ExecuteRequest()
{
try {
response = httpclient.execute(httpget);
entity=response.getEntity();
if(entity!=null)
{
InputStream inputStream=entity.getContent();
String result= convertStreamToString(inputStream);
Log.i("finalAnswer",result);
return result;
}
}
catch (ClientProtocolException e)
{
Log.e("errorhai",e.getMessage());
}
catch (IOException e)
{
Log.e("errorhai",e.getMessage());
}
return "";
}
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}