使用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。 **添加了互联网许可。 感谢任何需要时间帮助的人。
答案 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
。