gpt4 book ai didi

java - 使用 curl : Android 的 https 发布请求

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:53 26 4
gpt4 key购买 nike

我正在尝试使用 curl 执行 https 发布请求。当我执行此请求时,我既没有收到任何响应,也没有收到任何错误或异常。感谢帮助或任何关于这里出了什么问题的线索。谢谢。

curl 命令行格式:

    curl -X POST \
-F 'image=@filename.png;type=image/png' \
-F 'svgz=@filename.svgz;type=image/svg+xml' \
-F 'json={
"text" : "Hello world!",
"templateid" : "0010",
"timestamp" : "1342683312",
"location" : [ 37.7793, -122.4192 ],
"facebook" :
{
"id": "738124695",
"access_token": "<VALID_USER_FACEBOOK_TOKEN_WITH_PUBLISH_ACTIONS_PERMISSIONS",
"expiration_date": "1342683312"
}
};type=application/json' \
https://sample.com/api/posts

Facebook 发布代码:

public static void uploadToFB() {
HttpClient client = getNewHttpClient();
HttpPost httpost = new HttpPost("https://sample.com/api/posts");
httpost.addHeader("image", "filename.png");
httpost.addHeader("svgz", "filename.svgz");
httpost.addHeader("type", "application/json");
httpost.setHeader("Content-type", "application/json");
JSONObject data = new JSONObject();
JSONObject facebook = new JSONObject();
JSONArray location = new JSONArray();
HttpResponse response = null;
try {
data.put("text","Hello world!");
data.put("templateid","0010");
data.put("timestamp","2012-07-08 09:00:45.312195368+00:00");

location.put(37.7793);
location.put( -122.4192);
data.put("location", location);
facebook.put("id", "738124695");
facebook.put("access_token", "AAADdF92joPABAKmRojBuXZAZAP"+
"qF8ZAxM2bM"+
"UnIErUSYZB85y5vIHAZDZD");
facebook.put("expiration_date", "2013-07-07T 22:00:00Z");
data.put("facebook", facebook);

System.out.println(" ---- data ----- "+data);

StringEntity stringEntity = new StringEntity(data.toString());
httpost.setEntity(stringEntity);
try {
response = client.execute(httpost);
System.out.println(" --- response --- "+response);
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no need
// to worry about connection release
if(entity != null) {
// A Simple Response Read
InputStream instream = entity.getContent();
String result = convertStreamToString(instream);
System.out.println(" ---- result ---- "+result);

// Closing the input stream will trigger connection release
instream.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}

这是一个不受信任的网络,因此,为此我做了类似下面的 this 中的操作链接。

private static HttpClient getNewHttpClient() {
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);

SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", sf, 443));

ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

return new DefaultHttpClient(ccm, params);
} catch (Exception e) {
return new DefaultHttpClient();
}
}

最佳答案

    BufferedReader in = null;
StringBuffer sb = new StringBuffer();
BufferedReader inPost = null;


try {
DefaultHttpClient httpclient = new DefaultHttpClient();


HttpPost httpost = new HttpPost(mURL);

httpost.setHeader("Accept","*/*");
httpost.setHeader("Content-Type", "application/x-www-form-urlencoded");

List <NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("testkey1", "myvalue1"));
nvps.add(new BasicNameValuePair("testkey2", "myvalue2"));


httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

HttpResponse response = httpclient.execute(httpost);
HttpEntity entity = response.getEntity();

inPost = new BufferedReader(new InputStreamReader(entity.getContent()));
String linePost = "";
String NLPOST = System.getProperty("line.separator");
while ((linePost = inPost.readLine()) != null) {
sb.append(linePost + NLPOST);
}
inPost.close();
if (entity != null) {
entity.consumeContent();
}


httpclient.getConnectionManager().shutdown();

还有更多关于这个链接.. http://www.softwarepassion.com/android-series-get-post-and-multipart-post-requests/

关于java - 使用 curl : Android 的 https 发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14315946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com