在java中使用CURL时出错

时间:2014-05-08 10:32:28

标签: curl salesforce salesforce-service-cloud

我要转换的CURL是

curl –insecure -H "Authorization: Bearer c25laGEyMDE0QHZ5b21sYWJzLmNvbTpwdW5lQDEyM2lSWWx6MFdtbjBxRjExcDVyQTE5eDRNNVk" -H "Content-Type: application/json" -d @Incident.txt https://na15.salesforce.com/services/apexrest/Incident/

我正在使用的java代码是

import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class Test {

    public static void main(String[] args) {
        try {
            String url = "https://na15.salesforce.com/services/apexrest/Incident/";

            URL obj = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

            conn.setRequestProperty("Content-Type", "application/json");
            conn.setDoOutput(true);

            conn.setRequestMethod("PUT");

            String userpass = "username" + ":" + "password+securitytoken_of_force.com";
            String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());

            System.out.println(basicAuth);
            conn.setRequestProperty ("Authorization : Bearer", basicAuth);

            String data =  "{\"srd1\":\"HardwareIssue\"}";
            OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
            out.write(data);
            out.close();

            new InputStreamReader(conn.getInputStream());   
        } catch (Exception e) {
            e.printStackTrace();
        }
     } 
 } 

但在执行代码时,我面临以下错误

  

"服务器返回HTTP响应代码:401 for   地址:https://na15.salesforce.com/services/apexrest/Incident/"

我是新手,请建议。

2 个答案:

答案 0 :(得分:0)

错误401表示您无权访问URL /资源。我试图运行你的cURL代码,它还返回了一条带有这条消息的信息:

[{"message":"Session expired or invalid","errorCode":"INVALID_SESSION_ID"}]

也许您没有传递正确的Authorization标题。

答案 1 :(得分:0)

你似乎想要混合基本的auth&无法工作的oauth令牌,需要通过其中一个OAuth流获取授权头中传递的Bearer令牌。有很多文档&关于此的文章,从online help

开始