我正在尝试使用Java通过RestAPI提交FormData。我可以使用我的代码创建新的联系人,但是当我将其更改为POST到表单时,我无法弄清楚填充表单的JSON格式应该是什么。
这是我收到的错误。
java.io.IOException: Server returned HTTP response code: 401 for URL:
https://secure.eloqua.com/API/REST/2.0/data/form/175
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at SaveFormData.main(SaveFormData.java:37)
这是我正在尝试的。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
public class SaveFormData {
public static void main(String[] args) {
try {
String authString = "siteid\\username" + ":" + "password";
String authToken = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(authString.getBytes());
String response ="";
String line;
String body = "{\"fieldValues\":[{\"id\":0,\"value\":\"asdfasdf\",\"type\":\"FieldValue\"}],\"type\":\"FormData\"}";
URL url = new URL("https://secure.eloqua.com/API/REST/2.0/data/form/175");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setInstanceFollowRedirects(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Authorization", authToken);
conn.setDoOutput(true);
final OutputStream os = conn.getOutputStream();
os.write(body.getBytes());
os.flush();
os.close();
InputStream is = conn.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader( is));
while ((line = rd.readLine()) != null)
{
response += line;
}
rd.close();
conn.disconnect();
System.out.println(response);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}