嗨,我有一个位置应用程序,我在1/2小时内更新一次位置到服务器,它工作得很好,但它使用2.2和2.3 android版本向服务器发布值。在3.0及以上版本中,它正在获取GPS坐标,而不是不将值发布到服务器,有人能说为什么会发生这种情况吗?但它工作得很好,并在2.2和2.3上向服务器发送值!
代码:public class MainActivity extends Activity {
String Message;
DefaultHttpClient httpclient;
HttpPost httppost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GetServerResponseRawString();
}
private String GetServerResponseRawString() {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("imei", "400098890098"));
nameValuePairs.add(new BasicNameValuePair("location", "13.116,80.208"));
nameValuePairs.add(new BasicNameValuePair("latitude", "13.116"));
nameValuePairs.add(new BasicNameValuePair("longitude", "80.208"));
// nameValuePairs.add(new BasicNameValuePair("logdate", "30-04-2013"));
return GetServerResponseRawString(
"http://197.168.1.1:90/LogGeo.aspx", nameValuePairs);
}
public String GetServerResponseRawString(String str_Url,
List<NameValuePair> nvp_Parameter) {
String str_Response = "";
try {
HttpResponse response;
this.httpclient = new DefaultHttpClient();
this.httppost = new HttpPost(str_Url);
this.httppost.setEntity(new UrlEncodedFormEntity(nvp_Parameter,
HTTP.UTF_8));
response = this.httpclient.execute(this.httppost);
if (response != null
&& response.getStatusLine().getStatusCode() == 200) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
StringBuilder builder = new StringBuilder();
for (String line = null; (line = reader.readLine()) != null;) {
builder.append(line).append("n");
}
Message = builder.toString().split("<")[0];
str_Response = builder.toString();
return str_Response;
}
} catch (Exception e) {
String str_e = e.toString();
return str_Response;
}
return str_Response;
}
}
Xml: <uses-permission android:name="android.permission.INTERNET" />
谢谢. . !
您可以尝试通过http或https async post方法
public class post extends AsyncTask<Void, Void, JSONArray> {
@Override
protected JSONArray doInBackground(Void... params) {
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "StringData"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
sb.append(reader.readLine() + "n");
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
reader.close();
String result11 = sb.toString();
// parsing data
return new JSONArray(result11);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(JSONArray result) {
if (result != null) {
// do something
} else {
// error occured
}
}
}