Post
(JAVA)准备数据,form 表单数据
String postBody = MessageFormat.format(
"access_token={0}&nsp_svc={1}&nsp_ts={2}&device_token_list={3}&payload={4}",
URLEncoder.encode(accessToken,"UTF-8"),
URLEncoder.encode("openpush.message.api.send","UTF-8"),
URLEncoder.encode(String.valueOf(System.currentTimeMillis() / 1000),"UTF-8"),
URLEncoder.encode(deviceTokens.toString(),"UTF-8"),
URLEncoder.encode(payload.toString(),"UTF-8"));
(C#)准备数据,form 表单数据
String data = string.Format("access_token={0}&nsp_svc={1}&nsp_ts={2}&device_token_list={3}&payload={4}",
HttpUtility.UrlEncode(accessToken, Encoding.UTF8).Replace("+", "%20"),
HttpUtility.UrlEncode("openpush.message.api.send", Encoding.UTF8).Replace("+", "%20"),
HttpUtility.UrlEncode((DateTimeExtensions.currentTimeMillis(new DateTime()) / 1000).ToString(), Encoding.UTF8).Replace("+", "%20"),
HttpUtility.UrlEncode(deviceTokensString, Encoding.UTF8).Replace("+", "%20"),
HttpUtility.UrlEncode(playloadString, Encoding.UTF8).Replace("+", "%20"));
httpPost(postUrl, postBody, 5000, 5000);
PostMessage(postUrl, data);
(C#)最简单的发送 application/x-www-form-urlencoded 格式的form 数据
public static void PostMessage(string httpUrl, string body)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpUrl);
request.Accept = "text/plain, */*; q=0.01";
request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
//请求方式
request.Method = "POST";
request.KeepAlive = false;
request.ContentLength = body.Length;
Stream postStream = request.GetRequestStream();
byte[] postData = Encoding.UTF8.GetBytes(body);
postStream.Write(postData, 0, postData.Length);
postStream.Dispose();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
retString = myStreamReader.ReadToEnd();
}
(JAVA)最简单的发送 application/x-www-form-urlencoded 格式的form 数据
public static String httpPost(String httpUrl, String data, int connectTimeout, int readTimeout) throws IOException
{
OutputStream outPut = null;
HttpURLConnection urlConnection = null;
InputStream in = null;
try
{
URL url = new URL(httpUrl);
urlConnection = (HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
urlConnection.setConnectTimeout(connectTimeout);
urlConnection.setReadTimeout(readTimeout);
urlConnection.connect();
// POST data
outPut = urlConnection.getOutputStream();
outPut.write(data.getBytes("UTF-8"));
outPut.flush();
// read response
if (urlConnection.getResponseCode() < 400)
{
in = urlConnection.getInputStream();
}
else
{
in = urlConnection.getErrorStream();
}
List<String> lines = IOUtils.readLines(in, urlConnection.getContentEncoding());
StringBuffer strBuf = new StringBuffer();
for (String line : lines)
{
strBuf.append(line);
}
System.out.println(strBuf.toString());
return strBuf.toString();
}
finally
{
IOUtils.closeQuietly(outPut);
IOUtils.closeQuietly(in);
if (urlConnection != null)
{
urlConnection.disconnect();
}
}
}
(C#) HttpClient 异步请求
public static async void httpPostMessage(string httpUrl, string dviceToken, string payload)
{
var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.None };
using (var httpclient = new HttpClient(handler))
{
httpclient.BaseAddress = new Uri(httpUrl);
httpclient.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
httpclient.DefaultRequestHeaders.Add("Keep-Alive", "timeout=6000");
var contents = new FormUrlEncodedContent(new Dictionary(){
{"access_token", HttpUtility.UrlEncode(accessToken, Encoding.UTF8) },
{"nsp_svc",HttpUtility.UrlEncode("openpush.message.api.send", Encoding.UTF8) },
{"nsp_ts", HttpUtility.UrlEncode((DateTimeExtensions.currentTimeMillis(new DateTime())/ 1000).ToString(), Encoding.UTF8) },
{"device_token_list", HttpUtility.UrlEncode(dviceToken , Encoding.UTF8) },
{"payload", HttpUtility.UrlEncode(payload, Encoding.UTF8) }
});
var response = await httpclient.PostAsync("", contents);
var code = response.StatusCode;
if (code == HttpStatusCode.OK)
{
Console.WriteLine("httpPostMessage await 2");
Stream myResponseStream = await response.Content.ReadAsStreamAsync();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
retString = myStreamReader.ReadToEnd();
Console.WriteLine(retString);
Console.WriteLine("httpPostMessage await 3");
myStreamReader.Close();
myResponseStream.Close();
}
}
}