当前位置: 首页 > 知识库问答 >
问题:

java中的Apache httpclient whith FastBill.api

单修德
2023-03-14

我是java新手,需要这个项目。我必须结合使用Apache HttpClient和FastBill API。

curl -v -X POST \ 
–u {E-Mail-Adresse}:{API-Key} \ 
-H 'Content-Type: application/json' \ 
-d '{json body}' \ 
https://my.fastbill.com/api/1.0/api.php 
{
    "SERVICE":"customer.create",
    "DATA":
    {
        "CUSTOMER_TYPE":"business",
        "ORGANIZATION":"Musterfirma",
        "LAST_NAME":"Mmann"
    }
}
public class Fastbill implements FastbillInterface  {

private static final String URL_SECURED_BY_BASIC_AUTHENTICATION = "https://my.fastbill.com/api/1.0/api.php";

public Customer createCustomer(String firstname, String lastname, CustomerType customertype, String organisation) {

    CredentialsProvider provider = new BasicCredentialsProvider();
    UsernamePasswordCredentials credentials
     = new UsernamePasswordCredentials("*****@****", "************"); //Api Username and API-Key


    HttpClient client = HttpClientBuilder.create()
      .setDefaultCredentialsProvider(provider)
      .build();


    HttpPost httpPost = new HttpPost(URL_SECURED_BY_BASIC_AUTHENTICATION);
    httpPost.setHeader("Content-Type", "application/json");
    String json = "{\"SERVICE\":\"customer.create\",\"DATA\":{\"CUSTOMER_TYPE\":\"business\",\"ORGANIZATION\":\"Musterfirma\",\"LAST_NAME\":\"Newmann\"}}";
    try {
        HttpEntity entity = new ByteArrayEntity(json.getBytes("UTF-8"));
        httpPost.setEntity(entity);
    } catch (UnsupportedEncodingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    HttpResponse response;
    try {           
        response = client.execute(httpPost);
        int statusCode = response.getStatusLine()
                  .getStatusCode();
        System.out.println(statusCode);
        String responseString = new BasicResponseHandler().handleResponse(response);
        System.out.println(responseString);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }catch (Exception e){
        e.printStackTrace();
    }
org.apache.http.client.HttpResponseException: Unauthorized
at org.apache.http.impl.client.AbstractResponseHandler.handleResponse(AbstractResponseHandler.java:70)
at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:66)
at fastbillAPI.Fastbill.createCustomer(Fastbill.java:93)
at main.Mar.main(Mar.java:38)

现在,我不知道我做错了什么。

共有1个答案

秦才
2023-03-14

我也遇到过类似的问题,通过使用Matt S.Apache HTTP BasicScheme的示例解决方案解决了这些问题。Authenticate deprecated?。

通过以下方式进行身份验证:

UsernamePasswordCredentials creds = new UsernamePasswordCredentials("admin", "admin");
URI uriLogin = URI.create("http://localhost:8161/hawtio/auth/login/");
HttpPost hpPost = new HttpPost(uriLogin);
Header header = new BasicScheme(StandardCharsets.UTF_8).authenticate(creds , hpPost, null);
hpPost.addHeader( header); 
 类似资料:
  • 问题内容: 我的问题可能太广泛了,答案可能是简单的“否”,但我不得不问。 Java 7中有(Java 8)流 *的等效实现吗? 我熟悉(Java 8)流,但是我的项目要求是使用Java 7。 *不要与inputStream和outputStream混淆。 问题答案: 在官方API中,没有。 Java 7没有更多的公共更新。如果您是客户,您可能仍然会获得较小的更新,但是对于反向移植Stream AP

  • 问题内容: 我正在寻找Java中的KeyValuePair类。 由于java.util大量使用接口,因此没有提供具体的实现,只有Map.Entry接口。 我可以导入一些规范的实现吗?这是我讨厌实现100倍的“管道工编程”类之一。 问题答案: 类AbstractMap.SimpleEntry是通用的,并且可能有用。

  • 问题内容: 我已经问过类似的问题,但是这次我将更具体。 我需要在一个循环中执行通常较大的正定对称矩阵(约)的Cholesky分解。现在,为此,我一直尝试: 1)Apache数学库 2)平行柯尔特库 3)JLapack库 在上述三种情况中的任何一种情况下,例如与MATLAB相比,时间消耗都非常长。 因此,我想知道Java中是否存在用于Cholesky分解的高度优化的外部工具:例如,我一直在思考CHO

  • 问题内容: Java 的用途是什么?有什么好处?它是如何工作的?示例代码也将很有用。 问题答案: 关键是要提供线程安全的实现。多个线程可以对其进行读写,而没有机会接收到过时或损坏的数据。 提供自己的同步,因此您不必显式同步对其的访问。 的另一个功能是它提供了该方法,如果指定的键不存在,它将 自动 添加一个映射。考虑以下代码: 此代码不是线程安全的,因为另一个线程可以在到和的调用之间添加映射。正确的

  • 问题内容: 在Java中调用R功能的最佳方法是什么? 我正在寻找一种使用我的Java应用程序在R中制作标准2d散点图和直方图的快速,简便和可靠的方法。我想知道快速Google搜索中出现的哪些程序包/界面最方便使用。 我期待您的建议! 问题答案: 使用JRI:http ://www.rforge.net/JRI/ 。它与rJava捆绑在一起,包括一些用法示例。 一个非常简单的示例如下:

  • 问题内容: 我正在尝试在Java中实现以下代码: 通过使用以下之一: 我浏览了许多SO的示例和问题,但没有找到正确生成iv []的方法(与C中的值相同)。似乎没有办法做到这一点,因为java允许仅以随机(而不是C语言中可用的伪随机)创建此值。这是正确的吗?有人可以帮忙解决这个问题吗? 问题答案: 收到crypt专家的提示,找到了正确的解决方案:

  • 问题内容: 有谁知道为什么选项卡(\ t)与JOptionPane.showMessageDialog不兼容? 我的代码如下: 还有其他方法可以在JOptionPane中对齐文本吗? 问题答案: 将选项卡式文本放入JTextArea

  • 问题内容: Java类在使用时起什么作用?Java文档没有太大帮助。 有什么方法可以将密钥库和信任库与sslsocketfactory对象绑定,使其指向密钥库和信任库? 否则,连接如何知道密钥库和信任库的位置(我不想使用java )? 问题答案: 它通过SSLContext完成。初始化一个,然后使用它的套接字工厂创建HttpsConnection实例。 这是我如何在应用程序中进行管理的粗略示例: