private void parseResponse(HttpSender httpSender) throws Exception {
    log.trace("parseResponse()");

    response = new ProxyMessage();

    ProxyMessageDecoder decoder =
        new ProxyMessageDecoder(
            response, httpSender.getResponseContentType(), getHashAlgoId(httpSender));
    try {
      decoder.parse(httpSender.getResponseContent());
    } catch (CodedException ex) {
      throw ex.withPrefix(X_SERVICE_FAILED_X);
    }

    // Ensure we have the required parts.
    checkResponse();

    decoder.verify(requestServiceId.getClientId(), response.getSignature());
  }