休息php客户端解组异常

时间:2017-11-23 06:48:27

标签: php rest exception

任务是在php中构建一个REST客户端,发送和接收XML(我知道已经发布)。

如果我向REST-api发送内容,我会收到UnmarshallingException。

这是什么意思?

以下是我的代码的一部分:

public function createOrganisationUnit($kvcObject){
    try{
        $restclient = new RestClient(Environment::getConfiguration()['rest_url']);
        $response = $restclient->execute(
            RestClient::REQUEST_TYPE_POST,
            '/rest/organisations/'.self::getOurID().'/organisationunits',
            $kvcObject->xmlOrganisationUnit()
        );
        echo 'createOrg<br>';var_dump($response);echo'<br>';
        if ($response['http_code'] == 201){         //created, return new ID
            return substr($response['body'], strrpos($response['body'], "/"));
        }elseif($response['http_code'] == 400){     //allready there, return found ID
            return self::getOrganisationUnitsID($kvcObject->getOrganisationUnit()->getBsnr());
        }else{                                      // error, return false
            return false;
        }
    }catch (Exception $e){
        print_r( $e->getMessage() ) . PHP_EOL;
    }   
}

其中$ kvcConnect-&gt; xmlOrganisationUnit()将xml作为字符串传递。 并且self :: getOurID()工作正常,将建议的ID作为Integer传递。

我不使用Symfony或任何其他框架。

祝你好运 约翰内斯

2 个答案:

答案 0 :(得分:0)

try {
    FileInputStream inputStream = new FileInputStream(new File("your file"));
    AddRequest req = JAXB.unmarshal(inputStream, AddRequest.class);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

答案 1 :(得分:0)

我发现,我的RestClass中的sprint(“%s”,$ post_data)是问题所在。