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();
}
}
}