我是JSON的新手,正在开发Coinbase API。 See here
所以我试图通过HTTP发布这些数据:
{
"transaction": {
"to": "user1@example.com",
"amount": "1.234",
"notes": "Sample transaction for you"
}
}
我如何用Java做到这一点?
我知道如何创建一个程序来GET
一个响应,而不是如何POST
一个请求。
以下是响应的程序:
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import com.coinbase.api.Coinbase;
import com.coinbase.api.CoinbaseBuilder;
public class CoinbaseExample {
static String API_KEY = "My API KEY";
static String API_SECRET = "MY API SECRET";
public static String getHttp(String url, String body)
throws InvalidKeyException, NoSuchAlgorithmException,
ClientProtocolException, IOException {
String nonce = String.valueOf(System.currentTimeMillis());
String message = nonce + url + (body != null ? body : "");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(API_SECRET.getBytes(), "HmacSHA256"));
String signature = new String(Hex.encodeHex(mac.doFinal(message.getBytes())));
HttpRequestBase request;
if (body == null || body.length() == 0)
request = new HttpGet(url);
else {
HttpPost post = new HttpPost(url);
post.setEntity(new StringEntity(body));
request = post;
}
request.setHeader("ACCESS_KEY", API_KEY);
request.setHeader("ACCESS_SIGNATURE", signature);
request.setHeader("ACCESS_NONCE", nonce);
HttpClient httpClient = HttpClientBuilder.create().build();
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null)
return EntityUtils.toString(entity);
return null;
}
}
如何将此类似程序创建为发布请求?
答案 0 :(得分:0)
试试这个
String url = "http://yoururl.com";
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
String urlParameters = "sn=C02G8416DRJM&cn=&locale=&caller=&num=12345";
// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println(response.toString());