Issues with the DOI-CrossRef automatic registration

,

Hi there,
I have been trying to register all the articles of a journal in OJS 2.4.8.0 through the Exportation plugin of CrossRef XML.
First I had an error related to the publication date of the issues and we solved it and now another error is showing up and I do not know exactly where it could be.
We have checked the username and password for CrossRef and it seems that everything is ok…

I have also checked some topics on this forum, but the error seems to be different that ours.

It says the following:
No se pudo realizar el registro. El servidor de registro DOI ha devuelto un error: ‘No response from server.’. (The register could not be done. The server of the DOI register has given an error: No response from server).

I have also tried to export the XML for all the articles with the plugin but it shows a white screen. It seems that it has nothing to do with the amount of articles, because I have also tried only checking one or few articles each time.

Someone has some solution for this?

Thank you very much.

The message of “No response from server” indicates that your server is having trouble connecting to the CrossRef server at https://api.crossref.org/deposits .

Some possible considerations:

You can get details on the white screen at export by looking at your web server’s error log:

@ctgraham

I am having a similiar issue with exporting DOI. I am using the current version of OJS. Can you help me with this

@a2usmani , please share your specific steps to reproduce the problem, and the error messages you see, both those messages on the screen and any messages from your webserver’s error log.

@ctgraham Thanks for your reply.

I use the default plugin for Depositing DOI. I have entered the required username and password for Crossref in the plugin.

In the plugin I goto articles and check one article and click deposit button at the end of the page.
The error I get is

Registration was not successful! The DOI registration server returned an error: 'No response from server.'.

Then I goto Cpanel > File Manager>public_html and check error log. The log is showing the following message and there is nothing else in the log

[02-Apr-2021 08:55:12 UTC] ojs2: 404 Not Found
[02-Apr-2021 08:56:37 UTC] ojs2: 404 Not Found

Now I don’t know what is the issue. I tried to google it but couldn’t get to the solution. Please help. Thankyou.

Regards

Are you comfortable modifying the code to get some additional information on why this is failing? In 3.2 and earlier, there are two places where this message appears in the CrossRef plugin:

and

The exact formulation of how to log the additional error information will depend on your specific version of OJS. If you are comfortable adding some debugging code, what version are you using?

@ctgraham

Yes I am comfortable and able to add the code. Will it work.

I have three OJS installations on different servers

3.3.0.4

3.1.2.4

3.3.0.4

I having the same error on all installations. Also I received information from another friend with the same error and they asked for my help.

Please guide.

thanks

Regards

I’m not seeing the message “No response from server” in the code for 3.3.0.4, so let’s look at the 3.1.2.4 install to try to debug. Hopefully this will give us some clues about 3.3.0.4 as well.

In /plugins/importexport/crossref/CrossRefExportPlugin.inc.php at line 142:

and at line 316:

If you change the parameter:
'No response from server.'
to
'No response from server.'.curl_error($curlCh)
then the message which appears on screen will contain additional details about why the connection is failing.

For example, after the change, the first line would look like:

			$result = __('plugins.importexport.common.register.error.mdsError', array('param' => 'No response from server.'.curl_error($curlCh)));

@ctgraham

I changed both the lines in the filer and then tried to deposit one article. It failed and when I clicked failed link. It gave me this message. It says incorrect username and password. But I am using correct credentials which CrossRef gave me and I use it for logging in their portal and meta data manager.

Apache Tomcat/8.0.15 - Error reportH1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}

HTTP Status 500 - Request processing failed; nested exception is org.crossref.qs.security.CredentialException: Wrong credentials. Incorrect username or password.

type Exception report

message Request processing failed; nested exception is org.crossref.qs.security.CredentialException: Wrong credentials. Incorrect username or password.

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.crossref.qs.security.CredentialException: Wrong credentials. Incorrect username or password.

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:965)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.crossref.common.servlet.RequestCaptureFilter.doFilter(RequestCaptureFilter.java:139)

root cause

org.crossref.qs.security.CredentialException: Wrong credentials. Incorrect username or password.
org.crossref.qs.security.GeneratePermissionsImpl.authenticateUsername(GeneratePermissionsImpl.java:472)
org.crossref.qs.security.NameAndPasswordCredential.authenticate(NameAndPasswordCredential.java:68)
org.crossref.qs.security.AuthorizationServiceImpl.authorize(AuthorizationServiceImpl.java:84)
org.crossref.qs.security.AuthorizationServiceImpl.authorizeAndIncrementConcurrentUseCount(AuthorizationServiceImpl.java:129)
org.crossref.ds.controllers.SynchronousDepositController.handleRequest(SynchronousDepositController.java:143)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.crossref.common.spring.servlet.CrossRefDispatcherServlet$1.handle(CrossRefDispatcherServlet.java:140)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:919)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.crossref.common.servlet.RequestCaptureFilter.doFilter(RequestCaptureFilter.java:139)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.15 logs.


Apache Tomcat/8.0.15

Do your username or password have any special characters which might be misinterpreted? For example a quote which might have be converted to a “smart quote” in a copy and paste?

If you are able to access the database directly, does the username and password look correct there?

select setting_name, setting_value from plugin_settings where plugin_name = 'crossrefexportplugin' and setting_name in ('username', 'password');

@ctgraham

Yes the password in db is correct. Ichecked through the query
Also there are no special characters

My next steps would be (in order):

  • Change the Crossref password; retest.
  • Reach out to Crossref support to see if they have a reason why a username password which is working for the Web UI is failing for API calls
  • Copy the site to a different service provider and test the Crossref connection from there (unless your three installations already span different service providers).
  • Debug the API call at the HTTP level, to confirm the credentials are being sent as expected.

Dear @ctgraham

I reached out to cross ref team and asked for the point 2. They asked

Can you send me over some examples of the API calls that are failing

Please guide,

The two API endpoints which OJS uses are:
https://api.crossref.org/v2/deposits
and
https://api.crossref.org/servlet/submissionDownload

If that is not enough, this essentially pushes us toward the fourth option, “Debug the API call at the HTTP level”, which will be quite complex.

This stackoverflow article describes capturing the requested HTTP calls via PHP cURL, using CURLOPT_VERBOSE and pointing CURLOPT_STDERR to a file handle. You should only approach this if very comfortable modifying the code.

I’m experiencing the same problem.

Please post here if you get a response from their team! :slight_smile: