0

このrest APIメソッドを呼び出そうとしています

 @HttpGet
    global static String retrievingNotificationSettings(){

     RestRequest req=RestContext.request;

    RestResponse res=RestContext.response;

      String accountId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
     if(req.headers.get('Content-Type').equals('application/xml'))
     {
      Map<String, SObjectField> fields = Notification_Settings__c.SObjectType.getDescribe().fields.getMap();

      Schema.sObjectField T ;
      Notification_Settings__c ss;
      return 'hello World';

      }  


      if(req.headers.get('Content-Type').equals('application/json'))

    return System.JSON.serialize(note);


    return null;

私のリクエストは

GET /services/apexrest/v.9/notifications/preferences/ritesh HTTP/1.1
X-HostCommonName:
ap1.salesforce.com
Authorization:
OAuth 00D90000000j9AW!AQkAQLba73cDzjXhQ4kkQ2PSru4XpFuJcwr5kg_W_MkZmQnm9vI653FBWeJaABwClQqtJZD_b6j7V0O_elkzvkh7IqRKSUop
X-PrettyPrint:
1
Host:ap1.salesforce.com
X-Target-URI:
https://ap1.salesforce.com
Content-Type: application/json
Connection:Keep-Alive

そして、私が得ている応答は

HTTP/1.1 500 Internal Server Error
Date:
Fri, 25 Jan 2013 16:30:21 GMT
Content-Length:
203
Connection:
close
Content-Type:
application/json; charset=UTF-8
Server:

[
   {
    "message": "System.NullPointerException: Attempt to de-reference a null object\n\nClass.NotificationRestService.retrievingNotificationSettings: line 34, column 1",
    "errorCode": "APEX_ERROR"
  }
]

エラーが発生している行は

if(req.headers.get('Content-Type').equals('application/xml'))

ヘッダーで値 Content-Type を application/json として渡しているときにこのエラーが発生する理由がわかりませんでした?? どこが間違っているのか教えてください

4

1 に答える 1

0

System.debug(req.headers)正しく渡されたかどうかを確認できますか?

ヌルポインターの質問に文字通り答えるには、==代わりにequals次を使用します。

if(req.headers.get('Content-Type') == 'application/xml')

しかし、それは本当の根本的な問題を解決しません。

別のヘッダーで試してみるか (ばかげている、私は知っています)、GET パラメーターを追加することを決定することができます。&mode=json

于 2013-01-25T22:38:13.037 に答える