我使用的HttpClient将数据发送到PHP文件中像这样
i use httpClient to send data to php file like this
PHP
<?php
echo $_POST['My_Data'];
?>
和我添加&LT;使用-权限的Android:名称=android.permission.INTERNET对/&GT;
来AndroidManifest.xml中的互联网连接。
and i add <uses-permission android:name="android.permission.INTERNET" />
to AndroidManifest.xml for connect internet.
这是我的主要活动
SendActivity.java
SendActivity.java
public class SendActivity extends ActionBarActivity {
String myJSON;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send);
SendData();
}
public void SendData(){
class GetDataJSON extends AsyncTask<String, Void, String>{
private ProgressDialog pDialog;
private InputStream is = null;
private String url = "http://----/send.php";
private String page_output = "";
@Override
protected String doInBackground(String... args) {
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("My_Data", "this is my data"));
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
page_output = sb.toString();
Log.i("LOG", "page_output --> " + page_output);
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
return page_output;
}
@Override
protected void onPostExecute(String result){
Log.i("LOG", " onPostExecute -> " + result );
myJSON=result;
Log.i("LOG", "myJSON" + myJSON);
}
}
GetDataJSON g = new GetDataJSON();
Log.i("LOG", " GetDataJSON " );
g.execute();
}
}
我采用Android Studio和很多code 德precated 我的数据未发送到PHP和我不能从PHP数据
i use Android Studio and Lots of code deprecated And my data not send to php and i can't get data from php
是的HttpClient从Android的工作室过期或我错了?
is httpClient Expired from Android Studio or I'm wrong?
HTTP客户端pcated在API级别22所以,你必须使用开放OpenUrlConnection德$ P $。您可以使用此code
Http client is deprecated in api level 22. So you must use open OpenUrlConnection. You can use this code
public class FetchUrl {
private URL url;
public String fetchUrl(String urlString, HashMap<String, String> values) {
String response = "";
try {
url = new URL(urlString);
Log.d("url string", urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
os, "UTF-8"));
writer.write(getPostDataString(values));
writer.flush();
writer.close();
os.close();
int responseCode = conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
while ((line = br.readLine()) != null) {
response += line;
}
} else {
response = "";
throw new Exception(responseCode + "");
}
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
private String getPostDataString(HashMap<String, String> params)
throws UnsupportedEncodingException {
StringBuilder result = new StringBuilder();
boolean first = true;
for (Map.Entry<String, String> entry : params.entrySet()) {
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}
Log.d("query string", result.toString());
return result.toString();
}
}