我正在使用Rune Madson和Daniel Shiffman的HTTP-Request-for-Processing课来处理GetRequest和PostRequest,以便与网站OAuth一起使用。
我输入正确的URL和要处理的参数:
spark-shell --packages com.databricks:spark-csv_2.11:1.4.0 --driver-class-path /path/to/csvfilejar.jar
但是我受到了这些错误的欢迎:
GetRequest req = new GetRequest("https://www.afakesite.com/oauth2/token");
req.addHeader("grant_type","authorization_code");
req.addHeader("client_id",ID);
req.addHeader("client_secret",fancyClientSecret);
req.addHeader("code",authorizationCode);
req.send();
我也尝试使用Processing方法:
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
哪个成功没有上述错误,所以我知道网站正在返回数据,但我也想使用PostRequest类将文件提交到网站。此命令也不报告网站提供的附加JSON文件的400错误,而是丢弃它并给我一个例外。
那么我应该如何在Processing中验证此请求,如果不可能或太复杂,我应该如何将文件发送到此站点。
我正在尝试验证的网站是DeviantArt,如果该信息在任何方面都有用。
答案 0 :(得分:2)
我建议尝试在没有库的情况下工作。您只需使用标准Java API中的HttpsUrlConnection
。
这是一个将一些数据发布到URL的小例子:
import javax.net.ssl.HttpsURLConnection;
import java.io.OutputStreamWriter;
import java.net.URL;
HttpsURLConnection connection = (HttpsURLConnection) new URL("https://example.com").openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write("param1=Data for param1");
writer.write("¶m2=Data for param2"); //Ampersand is necessary for more than one parameter
writer.write("¶m3=Data for param3");
writer.flush();
int responseCode = connection.getResponseCode();
if(responseCode == 200){
System.out.println("POST was successful!");
}
else{
System.out.println("Error: " + responseCode);
}
无耻的自我推销:还有一些例子(包括指定身份验证)可用here。
如果你可以使这个工作,那么你知道这对图书馆本身来说是不可思议的。老实说,自己做这个帖子并不需要很多代码,所以你可以完全摆脱这个库。
编辑处理不会编译代码,因为MalformedURLException可以通过包含在“try”块中来避免 即
try {
HttpsURLConnection connection = (HttpsURLConnection) new URL("https://example.com").openConnection();
//so on and so forth...
} catch(Exception e) {}