如何使用 HttpURLConnection post 数据
How to post data using HttpURLConnection
我已经从 API23 更改为 22,因为他们说 httpclient 不是 available.When 我切换到 API22 我遇到了 HttpClient、HttpPost 的问题,NameValuePair.I 找到了使用的解决方案 HttpURLConnectionHandler.But 不知道下面的方法怎么用
public void send(View v)
{
HttpClient httpclient = new DefaultHttpClient();
// put the address to your server and receiver file here
HttpPost httppost = new HttpPost("http://yoursite/yourPHPScript.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
// we wont be receiving the parameter ID in your server, but it is here to show you how you can send more data
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
// message is the parameter we are receiving, it has the value of 1 which is the value that will be sent from your server to your Arduino board
nameValuePairs.add(new BasicNameValuePair("message", "1"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost); // send the parameter to the server
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
好心人帮帮我
你可以这样做:
public boolean sendPost(MessageSenderContent content) {
HttpURLConnection connection;
try {
URL gcmAPI = new URL("your_url");
connection = (HttpURLConnection) gcmAPI.openConnection();
connection.setRequestMethod("POST");// type of request
connection.setRequestProperty("Content-Type", "application/json");//some header you want to add
connection.setRequestProperty("Authorization", "key=" + AppConfig.API_KEY);//some header you want to add
connection.setDoOutput(true);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
DataOutputStream dataOutputStream = new DataOutputStream(connection.getOutputStream());
//content is the object you want to send, use instead of NameValuesPair
mapper.writeValue(dataOutputStream, content);
dataOutputStream.flush();
dataOutputStream.close();
responseCode = connection.getResponseCode();
} catch (IOException e) {
e.printStackTrace();
}
if (responseCode == 200) {
Log.i("Request Status", "This is success response status from server: " + responseCode);
return true;
} else {
Log.i("Request Status", "This is failure response status from server: " + responseCode);
return false;
}
}
MessageSenderContent 示例,您可以为 "message" 和 "id" 创建自己的示例:
public class MessageSenderContent implements Serializable {
private List<String> registration_ids;
private Map<String, String> data;
public void addRegId(String regId){
if (registration_ids==null){
registration_ids = new LinkedList<>();
registration_ids.add(regId);
}
}
public void createData(String title,String message) {
if (data == null)
data = new HashMap<>();
data.put("title", title);
data.put("message", message);
}
public Map<String, String> getData() {
return data;
}
public void setData(Map<String, String> data) {
this.data = data;
}
public List<String> getRegIds() {
return registration_ids;
}
public void setRegIds(List<String> regIds) {
this.registration_ids = regIds;
}
@Override
public String toString() {
return "MessageSenderContent{" +
"registration_ids=" + registration_ids +
", data=" + data +
'}';
}
更新:
将其导入 build.gradle 文件后,您可以使用 HttpUrlConnection
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.apache.http.legacy' // this one will let you use HttpUrlConnection
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
...
}
我已经从 API23 更改为 22,因为他们说 httpclient 不是 available.When 我切换到 API22 我遇到了 HttpClient、HttpPost 的问题,NameValuePair.I 找到了使用的解决方案 HttpURLConnectionHandler.But 不知道下面的方法怎么用
public void send(View v)
{
HttpClient httpclient = new DefaultHttpClient();
// put the address to your server and receiver file here
HttpPost httppost = new HttpPost("http://yoursite/yourPHPScript.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
// we wont be receiving the parameter ID in your server, but it is here to show you how you can send more data
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
// message is the parameter we are receiving, it has the value of 1 which is the value that will be sent from your server to your Arduino board
nameValuePairs.add(new BasicNameValuePair("message", "1"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost); // send the parameter to the server
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
好心人帮帮我
你可以这样做:
public boolean sendPost(MessageSenderContent content) {
HttpURLConnection connection;
try {
URL gcmAPI = new URL("your_url");
connection = (HttpURLConnection) gcmAPI.openConnection();
connection.setRequestMethod("POST");// type of request
connection.setRequestProperty("Content-Type", "application/json");//some header you want to add
connection.setRequestProperty("Authorization", "key=" + AppConfig.API_KEY);//some header you want to add
connection.setDoOutput(true);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
DataOutputStream dataOutputStream = new DataOutputStream(connection.getOutputStream());
//content is the object you want to send, use instead of NameValuesPair
mapper.writeValue(dataOutputStream, content);
dataOutputStream.flush();
dataOutputStream.close();
responseCode = connection.getResponseCode();
} catch (IOException e) {
e.printStackTrace();
}
if (responseCode == 200) {
Log.i("Request Status", "This is success response status from server: " + responseCode);
return true;
} else {
Log.i("Request Status", "This is failure response status from server: " + responseCode);
return false;
}
}
MessageSenderContent 示例,您可以为 "message" 和 "id" 创建自己的示例:
public class MessageSenderContent implements Serializable {
private List<String> registration_ids;
private Map<String, String> data;
public void addRegId(String regId){
if (registration_ids==null){
registration_ids = new LinkedList<>();
registration_ids.add(regId);
}
}
public void createData(String title,String message) {
if (data == null)
data = new HashMap<>();
data.put("title", title);
data.put("message", message);
}
public Map<String, String> getData() {
return data;
}
public void setData(Map<String, String> data) {
this.data = data;
}
public List<String> getRegIds() {
return registration_ids;
}
public void setRegIds(List<String> regIds) {
this.registration_ids = regIds;
}
@Override
public String toString() {
return "MessageSenderContent{" +
"registration_ids=" + registration_ids +
", data=" + data +
'}';
}
更新:
将其导入 build.gradle 文件后,您可以使用 HttpUrlConnection
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.apache.http.legacy' // this one will let you use HttpUrlConnection
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
...
}