PHP不会发回回

时间:2016-04-11 14:30:54

标签: php android post android-asynctask

使用API​​ 23.无法提供LogCat(我没有模拟器,我只能通过生成apk来测试)。 我一整天都在尝试这些,但我仍然被卡住了。 Android App>将一些字符串发送到位于我的localhost中的php(使用xampp)>取回这些字符串并在TextView中显示。

MainActivity

public class MainActivity extends AppCompatActivity {

Button b1;
TextView t1;
EditText e1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    e1 = (EditText)findViewById(R.id.editText);
    t1 = (TextView)findViewById(R.id.textView);
     b1 = (Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
            GetText();
            } catch (Exception ex) {
                t1.setText("url exception");
            }
        }
    });
}

public void GetText() throws UnsupportedEncodingException {

    String nombre = e1.getText().toString();
    new SignIn().execute(nombre);
}

公共类SignIn扩展了AsyncTask {

    @Override
    protected String doInBackground(String... params) {
        String link="http://localhost:8012/kb_test/ejemplo.php";

        String code = params[0];
        StringBuilder sb = new StringBuilder();
        try {
            String data  = URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(code, "UTF-8");

            URL url = new URL(link);
            URLConnection conn = url.openConnection();

            conn.setDoOutput(true);
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());

            wr.write( data );
            wr.flush();

            BufferedReader reader = new BufferedReader(new InputStreamReader (conn.getInputStream()));


            String line = null;

            while((line = reader.readLine()) != null)
            {
                sb.append(line);
                break;
            }
            return sb.toString();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            return new String("Exception: " + e.getMessage());
        }
        return sb.toString();
    }
    @Override
    protected void onPostExecute(String result){
        Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG);
    }
}

.XML

  <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/editText" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:text="Name"
    android:ems="10"
    android:id="@+id/editText"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Large Text"
    android:id="@+id/textView"
    android:layout_below="@+id/button"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="141dp" />

.PHP

<?php 

   $name   = urldecode($_POST['name']);
  /* $user   = urldecode($_POST['user']);
   $email  = urldecode($_POST['email']);
   $pass   = urldecode($_POST['pass']);*/


  echo 'Name '. $name /*'Email: '.$email' User'. $user ' Pass  :'. $pass*/; 

&GT;

**我知道我必须在Localhost中输入我的实际IP。 **添加了互联网许可。 感谢任何需要时间帮助的人。

2 个答案:

答案 0 :(得分:0)

您的PHP代码有错误,应该是:

<?php 
    $name = urldecode($_GET['name']);
    $user = urldecode($_GET['user']);
    $email = urldecode($_GET['email']);
    $pass = urldecode($_GET['pass']);
    echo 'Name ' . $name . 'Email: ' . $email . ' User' . $user . ' Pass  :' . $pass;

每个字符串连接之间缺少.。 如果这仍然无济于事,请在前面加: error_reporting(E_ALL)并告诉我们当您尝试访问网络服务器上的脚本时出现的错误。

答案 1 :(得分:0)

你没有LogCat的废话。当然,如果您已将设备连接到电脑,则有一个。

您无法在onClick()处理程序中调用getText()。因为所有网络代码都必须在AsyncTask或线程中完成。

这就是为什么你现在有NetworkOnMainThreadException