Java-ответ HTTP не работает

Здравствуйте, я пытаюсь создать действие, в котором андроид отправляет значения в сценарий php, который вставляет значения в базу данных mysql, а затем ответ приходит в текстовое представление Android.
Когда я запускаю приложение и нажимаю кнопку, появляется диалоговое окно с надписью «создание комнаты чата …», и когда процесс завершается, диалоговое окно исчезает, и я не получаю никакого ответа в текстовом представлении, но я нахожу, что значения успешно вставлен в базу данных. что не так с моим кодом?

примечание: я не получаю никаких ошибок, и приложение не падает, и я добавил интернет-разрешение в манифест.

Это код Java:

public class SubmitRoomActivity extends Activity {
String username;
String ccolor;
String crname;
Button b;
EditText et,pass;
TextView tv;
HttpPost httppost;
StringBuffer buffer;
HttpResponse response2;
HttpClient httpclient;
List<NameValuePair> nameValuePairs;
ProgressDialog dialog = null;
public final static String CHATTER_NAME = "com.gowemto.gowemto.USERNAME";
public final static String CHATTER_COLOR = "com.gowemto.gowemto.CCOLOR";
public final static String CHATROOM_NAME = "com.gowemto.gowemto.CRNAME";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_submit_room);

b = (Button)findViewById(R.id.subroom);

tv = (TextView)findViewById(R.id.logerr2);

Intent intent = getIntent();
username = intent.getStringExtra(SelectRoomActivity.CHATTER_NAME);
ccolor = intent.getStringExtra(SelectRoomActivity.CHATTER_COLOR);
crname = intent.getStringExtra(SelectRoomActivity.CHATROOM_NAME);
final TextView welcominguser = (TextView) findViewById(R.id.hello_user_2);
if(ccolor.trim().equals("Black")){

welcominguser.setTextColor(Color.parseColor("#000000"));
}
else if(ccolor.trim().equals("Blue")){

welcominguser.setTextColor(Color.parseColor("#0000FF"));
}
else if(ccolor.trim().equals("Red")){

welcominguser.setTextColor(Color.parseColor("#FF0000"));
}
else if(ccolor.trim().equals("Orange")){

welcominguser.setTextColor(Color.parseColor("#FF8000"));
}
else if(ccolor.trim().equals("Green")){

welcominguser.setTextColor(Color.parseColor("#008000"));
}
else if(ccolor.trim().equals("Gray")){

welcominguser.setTextColor(Color.parseColor("#808080"));
}
else if(ccolor.trim().equals("Brown")){

welcominguser.setTextColor(Color.parseColor("#804000"));
}
else if(ccolor.trim().equals("Purple")){

welcominguser.setTextColor(Color.parseColor("#800080"));
}
else if(ccolor.trim().equals("Pink")){

welcominguser.setTextColor(Color.parseColor("#FF4080"));
}
else {

welcominguser.setTextColor(Color.parseColor("#000000"));
}
welcominguser.setText("Hello, " + username);b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog = ProgressDialog.show(SubmitRoomActivity.this, "",
"Creating room..", true);
new Thread(new Runnable() {
public void run() {
login();
}
}).start();
}
});
}

void login(){
try{
httpclient=new DefaultHttpClient();
httppost= new HttpPost("http://10.0.2.2/mychat/createroom"); // make sure the url is correct.
//add your data
nameValuePairs = new ArrayList<NameValuePair>(3);
// Always use the same variable name for posting i.e the android side variable name and php side variable name should be similar,
nameValuePairs.add(new BasicNameValuePair("username",username));  // $Edittext_value = $_POST['Edittext_value'];
nameValuePairs.add(new BasicNameValuePair("ccolor",ccolor));  // $Edittext_value = $_POST['Edittext_value'];
nameValuePairs.add(new BasicNameValuePair("roomname",crname));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
//Execute HTTP Post Request
response2=httpclient.execute(httppost);
// edited by James from coderzheaven.. from here....
ResponseHandler<String> responseHandler = new BasicResponseHandler();
final String response2 = httpclient.execute(httppost, responseHandler);
runOnUiThread(new Runnable() {
public void run() {
tv.setText(response2);
dialog.dismiss();
}
});}catch(Exception e){
dialog.dismiss();
tv.setText("Exception : " + e.getMessage());
}
}
}

и это код XML:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity"android:background="#EED8FF">

<LinearLayout
android:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerInParent="true"android:padding="10dp">
<TextView
android:id="@+id/hello_user_2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="16sp"android:textColor="#000000"/>
<TextView
android:layout_width="fill_parent"android:layout_height="56dp"android:text="@+string/room_inst_2"android:textSize="16sp"android:textColor="#000000"/>
<Spinner
android:id="@+id/second_colors"android:layout_width="match_parent"android:layout_height="wrap_content"android:entries="@array/sec_color_names" />
<Button
android:id="@+id/subroom"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:layout_margin="4dp"android:text="@string/cont_act"style="@style/DefaultButtonText"android:background="@drawable/button_default_bg"android:onClick="gotoRoom"/>
<TextView
android:layout_width="fill_parent"android:layout_height="56dp"android:id="@+id/logerr2"android:textColor="#000000"/>
</LinearLayout

</RelativeLayout>

и это скрипт php:

<?php
$hostname_localhost ="localhost";
$database_localhost ="chat_db";
$username_localhost ="root";
$password_localhost ="";
$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
or
trigger_error(mysql_error(),E_USER_ERROR);

mysql_select_db($database_localhost, $localhost);

$username = $_POST['username'];
$roomname = $_POST['roomname'];
$roomcolor = $_POST['ccolor'];
$query_insert = "INSERT INTO chatrooms VALUES('$username','$roomname','$roomcolor')";
$query_exec = mysql_query($query_insert) or die(mysql_error());

echo "Room created successfully";

?>

Как я могу исправить эту проблему? что не так с моим кодом?

1

Решение

Попробуйте получить контент на php с помощью:

$response = file_get_contents("http://10.0.2.2/mychat/createroom");

А затем декодируйте значения json с помощью json_decode ($ response)

0

Другие решения

Вы не получаете ошибок, потому что у вас есть это:

   }catch(Exception e){
dialog.dismiss();
tv.setText("Exception : " + e.getMessage());
}

Вы перехватываете все исключения (чтобы ваше приложение не зависало), но вы не регистрируете исключение, поэтому вы не знаете, в чем ваша проблема. Также вы звоните tv.setText() из фоновой темы. Очень плохой.

Попробуйте добавить некоторые записи здесь.

0

Вы вызываете метод post дважды. Это может быть проблемой, если вы установили некоторые уникальные ограничения
для вашего стола.

//Execute HTTP Post Request
response2=httpclient.execute(httppost);
// edited by James from coderzheaven.. from here....
ResponseHandler<String> responseHandler = new BasicResponseHandler();
final String response2 = httpclient.execute(httppost, responseHandler);

Думаю, вам достаточно одного почтового запроса. Забавно иметь две переменные с одинаковым именем, но с разным типом. Например, response2 — это HttpResponse, а другой — это String.

Если вы используете первый вызов execute, вы можете получить строку ответа, например:

String responseBody = EntityUtils.toString(response.getEntity());
0
По вопросам рекламы [email protected]