Java 通过HTTP GET将数据发送到PHP服务器
我正在建立一个应用程序,用户可以选择他/她的性别,最喜欢的食物,他们的愤怒,最喜欢的颜色,他们的年龄等 我故意将这些数据传递给我的最终活动。 现在,我正在尝试将答案发送到PHP服务器(工作正常)并获得答案(哪个城市最适合您) 这是我的代码,我不知道有什么问题(我已经添加了连接互联网的权限) 当我运行应用程序时,它工作正常,直到单击最后一个活动,然后它强制关闭应用程序Java 通过HTTP GET将数据发送到PHP服务器,java,php,android,Java,Php,Android,我正在建立一个应用程序,用户可以选择他/她的性别,最喜欢的食物,他们的愤怒,最喜欢的颜色,他们的年龄等 我故意将这些数据传递给我的最终活动。 现在,我正在尝试将答案发送到PHP服务器(工作正常)并获得答案(哪个城市最适合您) 这是我的代码,我不知道有什么问题(我已经添加了连接互联网的权限) 当我运行应用程序时,它工作正常,直到单击最后一个活动,然后它强制关闭应用程序 public class result extends AppCompatActivity { public void onCre
public class result extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
TextView result = (TextView)findViewById(R.id.result);
final String gender;
Intent a = getIntent();
gender = a.getStringExtra("gender");
final String anger;
Intent b = getIntent();
anger = b.getStringExtra("hate");
final String food;
Intent c = getIntent();
food = c.getStringExtra("food");
final String gettowork;
Intent d = getIntent();
gettowork = d.getStringExtra("gotowork");
final String settelment;
Intent ee = getIntent();
settelment = ee.getStringExtra("house");
final String actor;
Intent f = getIntent();
actor = f.getStringExtra("star");
final String weather;
Intent g = getIntent();
weather = g.getStringExtra("weather");
final String weekend;
Intent h = getIntent();
weekend = h.getStringExtra("weekend");
final String color;
Intent j = getIntent();
color = j.getStringExtra("color");
final String age;
Intent i10 = getIntent();
age = i10.getStringExtra("age");
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://test123.com/games/whichcity/app/check-form.php?gender=" + gender + "&anger=" + anger + "&food=" + food + "&gettowork=" + gettowork + "&settlement=" + settelment + "&actor=" + actor + "&weather=" + weather + "&weekend=" + weekend + "&color=" + color + "&age=" + age);
HttpResponse response = null;
try {
response = httpclient.execute(httpget);
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity entity = response.getEntity();
try {
InputStream webs = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(webs,"iso-8859-1"),8);
result.setText(reader.readLine());
} catch (IOException e) {
e.printStackTrace();
}}}
Android清单文件
出现此异常是因为您试图在UI线程中执行网络操作。相反,您可以将网络操作放在另一个线程中,或者实现一些更好的方法,最终将操作放在另一个线程中。这些更好的方法是使用异步任务或使用截击。我一定会投截击的票,因为截击既简单又简洁 执行截击行动
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://test123.com/games/whichcity/app/check-form.php?gender=" + gender + "&anger=" + anger + "&food=" + food + "&gettowork=" + gettowork + "&settlement=" + settelment + "&actor=" + actor + "&weather=" + weather + "&weekend=" + weekend + "&color=" + color + "&age=" + age;
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//handle response from server
result.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//handle error
result.setText("That didn't work!");
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
快乐编码 你能把你得到的错误贴出来吗?我们看看哪里出了问题。你也可以看到。你没有告诉我你的应用到底发生了什么。如果你查看日志,你就会知道出了什么问题。发布相关行。执行此代码后出现了什么问题?发布logcat.Post清单文件的相关行。那么,您为什么不提及由以下原因引起的另一个异常:
:android.os.NetworkOnMainThreadException
?在onCreate()
中看到您的网络代码时会出现此异常。
E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{org.vaya_group.charactertest/org.vaya_group.charactertest.result}: android.os.NetworkOnMainThreadException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2071)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2096)
at android.app.ActivityThread.access$600(ActivityThread.java:138)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1207)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:4787)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1126)
at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:141)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at org.vaya_group.charactertest.result.onCreate(result.java:86)
at android.app.Activity.performCreate(Activity.java:5008)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2035)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2096)
at android.app.ActivityThread.access$600(ActivityThread.java:138)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1207)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:4787)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://test123.com/games/whichcity/app/check-form.php?gender=" + gender + "&anger=" + anger + "&food=" + food + "&gettowork=" + gettowork + "&settlement=" + settelment + "&actor=" + actor + "&weather=" + weather + "&weekend=" + weekend + "&color=" + color + "&age=" + age;
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//handle response from server
result.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//handle error
result.setText("That didn't work!");
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
dependencies {
compile 'com.android.volley:volley:1.0.0'
}