问题
I know how to create object by get authenticate and than call API
Here below link is information available how to get authenticate, Unauthorized error while connecting Object Storage from API from Postman
Is there any library available in JAVA to perform these operation?
I got library from below link but it seems old one and not working, https://github.com/softlayer/softlayer-object-storage-java/tree/master/sl-objectstorage
If anyone know Can you please post how to operate it?
By using library getting below error,
Error while handling an HTTP client call
java.lang.ClassCastException: org.restlet.data.Parameter incompatible with org.restlet.data.Header
at org.restlet.engine.header.HeaderUtils.addExtensionHeaders(HeaderUtils.java:220)
at org.restlet.engine.header.HeaderUtils.addRequestHeaders(HeaderUtils.java:479)
at org.restlet.engine.adapter.ClientAdapter.toSpecific(ClientAdapter.java:163)
at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:118)
at org.restlet.Client.handle(Client.java:153)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1092)
at org.restlet.resource.ClientResource.handleOutbound(ClientResource.java:1176)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1047)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1023)
at org.restlet.resource.ClientResource.handle(ClientResource.java:928)
at org.restlet.resource.ClientResource.get(ClientResource.java:636)
at com.softlayer.objectstorage.Client.httpRequest(Client.java:245)
at com.softlayer.objectstorage.Client.get(Client.java:177)
at com.softlayer.objectstorage.Client.auth(Client.java:128)
at com.softlayer.objectstorage.Client.<init>(Client.java:107)
at com.softlayer.objectstorage.Container.<init>(Container.java:77)
at com.wrakafka.consumer.ObjectStorageUtil.createContainer(ObjectStorageUtil.java:24)
at spark.KafkaConsumer.main(KafkaConsumer.java:51)
Nov 21, 2016 1:24:18 PM org.restlet.resource.ClientResource retry
INFO: A recoverable error was detected (1002), attempting again in 2000 ms.
Nov 21, 2016 1:24:20 PM org.restlet.engine.adapter.HttpClientHelper handle
INFO: Error while handling an HTTP client call
java.lang.ClassCastException: org.restlet.data.Parameter incompatible with org.restlet.data.Header
at org.restlet.engine.header.HeaderUtils.addExtensionHeaders(HeaderUtils.java:220)
at org.restlet.engine.header.HeaderUtils.addRequestHeaders(HeaderUtils.java:479)
at org.restlet.engine.adapter.ClientAdapter.toSpecific(ClientAdapter.java:163)
at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:118)
at org.restlet.Client.handle(Client.java:153)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1092)
at org.restlet.resource.ClientResource.retry(ClientResource.java:1650)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1100)
at org.restlet.resource.ClientResource.handleOutbound(ClientResource.java:1176)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1047)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1023)
at org.restlet.resource.ClientResource.handle(ClientResource.java:928)
at org.restlet.resource.ClientResource.get(ClientResource.java:636)
at com.softlayer.objectstorage.Client.httpRequest(Client.java:245)
at com.softlayer.objectstorage.Client.get(Client.java:177)
at com.softlayer.objectstorage.Client.auth(Client.java:128)
at com.softlayer.objectstorage.Client.<init>(Client.java:107)
at com.softlayer.objectstorage.Container.<init>(Container.java:77)
at com.wrakafka.consumer.ObjectStorageUtil.createContainer(ObjectStorageUtil.java:24)
at spark.KafkaConsumer.main(KafkaConsumer.java:51)
Nov 21, 2016 1:24:20 PM org.restlet.resource.ClientResource retry
INFO: A recoverable error was detected (1002), attempting again in 2000 ms.
Nov 21, 2016 1:24:22 PM org.restlet.engine.adapter.HttpClientHelper handle
INFO: Error while handling an HTTP client call
java.lang.ClassCastException: org.restlet.data.Parameter incompatible with org.restlet.data.Header
at org.restlet.engine.header.HeaderUtils.addExtensionHeaders(HeaderUtils.java:220)
at org.restlet.engine.header.HeaderUtils.addRequestHeaders(HeaderUtils.java:479)
at org.restlet.engine.adapter.ClientAdapter.toSpecific(ClientAdapter.java:163)
at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:118)
at org.restlet.Client.handle(Client.java:153)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1092)
at org.restlet.resource.ClientResource.retry(ClientResource.java:1650)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1100)
at org.restlet.resource.ClientResource.retry(ClientResource.java:1650)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1100)
at org.restlet.resource.ClientResource.handleOutbound(ClientResource.java:1176)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1047)
at org.restlet.resource.ClientResource.handle(ClientResource.java:1023)
at org.restlet.resource.ClientResource.handle(ClientResource.java:928)
at org.restlet.resource.ClientResource.get(ClientResource.java:636)
at com.softlayer.objectstorage.Client.httpRequest(Client.java:245)
at com.softlayer.objectstorage.Client.get(Client.java:177)
at com.softlayer.objectstorage.Client.auth(Client.java:128)
at com.softlayer.objectstorage.Client.<init>(Client.java:107)
at com.softlayer.objectstorage.Container.<init>(Container.java:77)
at com.wrakafka.consumer.ObjectStorageUtil.createContainer(ObjectStorageUtil.java:24)
at spark.KafkaConsumer.main(KafkaConsumer.java:51)
回答1:
Unfortunately, you can only upload files using: Softlayer Object Storage Java Client (it's not possible to create objects), here an example for authentication, create container and upload a file using the client:
package com.softlayer.objectstorage.main;
import java.util.HashMap;
import java.util.Map;
import com.softlayer.objectstorage.Container;
import com.softlayer.objectstorage.ObjectFile;
public class ObjectStorage {
String baseUrl;
String user;
String password;
public ObjectStorage(String baseUrl, String user, String password){
this.baseUrl = baseUrl;
this.user = user;
this.password = password;
}
public void createContainer(String containerName){
try{
Container containerCreate = new Container(containerName, baseUrl, user,
password, true);
containerCreate.create();
}catch (Exception e)
{
System.out.println(e);
}
}
public void UploadFile(String containerName, String fileName, String path)
{
try{
ObjectFile oFile = new ObjectFile(fileName, containerName, baseUrl, user, password, true);
Map<String, String> tags = new HashMap<String, String>();
tags.put("testtag", "Test Value");
String newOb = oFile.uploadFile(path, tags);
}catch (Exception e)
{
System.out.println(e);
}
}
public static void main(String[] args) {
/**
* Define Object Storage's parameters
*/
String baseUrl = "https://dal05.objectstorage.softlayer.net/auth/v1.0/";
String user = "set me";
String password = "set me";
// Define the container name to create
String containerName = "containerTest";
// Define the file name to create in the object storage
String fileName = "newTest.txt";
// Define the location path from file that you wish to upload
String pathFile = "C:\\Users\\Ruber Cuellar\\Documents\\test.txt";
// Create Object Storage connection
ObjectStorage objectStorage = new ObjectStorage(baseUrl, user, password);
// Create Container
objectStorage.createContainer(containerName);
// Upload file
objectStorage.UploadFile(containerName, fileName, pathFile);
}
}
I hope it helps, let me know any doubt or comment
来源:https://stackoverflow.com/questions/40720973/how-to-create-object-in-object-storage-using-java