Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用business central(Java)的web服务?(已解决)_Java_Http_Web Services_Http Status Code 401_Dynamics Business Central - Fatal编程技术网

如何使用business central(Java)的web服务?(已解决)

如何使用business central(Java)的web服务?(已解决),java,http,web-services,http-status-code-401,dynamics-business-central,Java,Http,Web Services,Http Status Code 401,Dynamics Business Central,我希望使用Business Central Web服务,以便将其添加到现有的Web应用程序中 我试过: 使用授权标题与邮递员一起测试(works) 测试SoapUI(works) 但我得到了这个错误: com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection post SEVERE: SAAJ0008: Bad Response; Unauthorized Exception in thread "main" co

我希望使用Business Central Web服务,以便将其添加到现有的Web应用程序中

我试过:

  • 使用授权标题与邮递员一起测试(works)
  • 测试SoapUI(works)
但我得到了这个错误:

 com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection post
SEVERE: SAAJ0008: Bad Response; Unauthorized
Exception in thread "main" com.sun.xml.messaging.saaj.SOAPExceptionImpl: java.security.PrivilegedActionException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Bad response: (401Unauthorized
 at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:171)
代码:

String网页=”https://api.businesscentral.dynamics.com/v2.0//...";
String name=“username”;
字符串password=“password”;
字符串authString=name+“:”+密码;
String authEncBytes=新字符串(Base64.getEncoder().encode(authString.getBytes(StandardCharsets.utf8));
字符串authStringEnc=新字符串(authEncBytes);
URL=新的URL(网页);
URLConnection URLConnection=url.openConnection();
setRequestProperty(“授权”、“基本”+authStringEnc);
MessageFactory MessageFactory=MessageFactory.newInstance();
SOAPMessage SOAPMessage=messageFactory.createMessage();
SOAPPart SOAPPart=soapMessage.getSOAPPart();
//肥皂袋
SOAPEnvelope=soapPart.getEnvelope();
envelope.getHeader().detachNode();
envelope.addHeader();
MimeHeaders hd=soapMessage.getMimeHeaders();
hd.addHeader(“授权”、“基本”+authEncBytes);
SOAPBody soapBodytxaber=envelope.getBody();
addNamespaceDeclaration(“myNamespace”、“uri”);
SOAPElement soapBodyElem0txa=soapBodytxaber.addChildElement(“Read”,“myNamespace”);
SOAPElement soapBodyElem1txa=soapBodyElem0txa.addChildElement(“否”,“myNamespace”);
soapBodyElem1txa.addTextNode(“00000058”);
SOAPConnectionFactory SOAPConnectionFactory=OAPConnectionFactory.newInstance();
SOAPConnection-SOAPConnection=soapConnectionFactory.createConnection();
soapMessage.saveChanges();
SOAPMessage soapResponse=soapConnection.call(SOAPMessage,url);

您需要确保尝试进行身份验证的用户具有Web服务访问密钥

然后,在进行身份验证时,必须使用Web服务访问密钥作为密码


在这一行代码中,
Basic
之后似乎缺少一个
空格

hd.addHeader("Authorization", "Basic" + authEncBytes);
应该是的

hd.addHeader("Authorization", "Basic " + authEncBytes);

解决方案

好的,在接受一门课程后,他们告诉我基本授权已被弃用,他们现在使用OAuth 2

谢谢你的回复


您好

谢谢您的回复。我已经创建了密钥,并使用postman对其进行了测试,通过头上的身份验证手动访问。它起作用了。问题是它对我的代码不起作用,我不知道我是否遗漏了什么。非常感谢。我编辑了我的答案。是的,我真的很抱歉我没有正确地输入代码,因为我已经尝试了很多东西,我没有改变它。。。然而,仍然没有做到这一点。无论如何,我投你一票