相当于 CURL 命令的 Apache HTTP 客户端来配置 shapefile
Apache HTTP client equivalent of CURL command to configure shapefiles
以下 CURL 命令的 httpclient 代码等效于什么
curl -v -u username:password-XPUT -H "Content-type: text/plain" -d "E:/path_to_shapefile/shapefiles/" "http://172.16.17.86:9090/geoserver/rest/workspaces/IDIRA6/datastores/scenario2373/external.shp?configure=all"
CURL 命令工作正常。我对httpclient的了解有限,但是,改编类似的代码,以下是我的尝试:
import org.apache.http.client.fluent.*;
public class QuickStart {
public static void main(String[] args) throws Exception {
Executor executor = Executor.newInstance()
.auth("username", "password")
.authPreemptive("172.16.17.86:9090");
// Line below does not compile
String response = executor.execute(Request.Put("E:/path_to_shapefile/shapefiles/"
"http://172.16.17.86:9090/geoserver/rest/workspaces/IDIRA6/datastores/scenario2373/external.shp?configure=all"))
.returnResponse()
.toString();
System.out.println(response);
}
}
上面的代码无法编译,因为我不知道如何在与 CURL 命令相同的请求中对两个 url 进行编码。对上述代码的修复或新方法将不胜感激。
提前致谢。
import org.apache.http.client.fluent.*;
import org.apache.http.entity.ContentType;
public class QuickStart {
public static void main(String[] args) throws Exception {
Executor executor = Executor.newInstance()
.auth("admin", "geoserver")
.authPreemptive("172.16.17.86:9090");
String response = executor.execute(Request.Put("http://172.16.17.86:9090/geoserver/rest/workspaces/IDIRA6/datastores/scenario2373/external.shp?configure=all")
.bodyString("E:\Tomcat\apache-tomcat-8.5.37\webapps\geoserver\data\data\IDIRA6\scenario2373\", ContentType.create("text/plain")))
.returnResponse()
.toString();
System.out.println(response);
}
}
感谢您的回答。我用 bodyString 替换了 bodyFile 并且成功了。
import org.apache.http.client.fluent.*;
import org.apache.http.entity.ContentType;
public class QuickStart {
public static void main(String[] args) throws Exception {
Executor executor = Executor.newInstance()
.auth("admin", "geoserver")
.authPreemptive("172.16.17.86:9090");
String response = executor.execute(Request.Put("http://172.16.17.86:9090/geoserver/rest/workspaces/IDIRA6/datastores/scenario2373/external.shp?configure=all")
.bodyString("E:\Tomcat\apache-tomcat-8.5.37\webapps\geoserver\data\data\IDIRA6\scenario2373\", ContentType.create("text/plain")))
.returnResponse()
.toString();
System.out.println(response);
}
}
以下 CURL 命令的 httpclient 代码等效于什么
curl -v -u username:password-XPUT -H "Content-type: text/plain" -d "E:/path_to_shapefile/shapefiles/" "http://172.16.17.86:9090/geoserver/rest/workspaces/IDIRA6/datastores/scenario2373/external.shp?configure=all"
CURL 命令工作正常。我对httpclient的了解有限,但是,改编类似的代码,以下是我的尝试:
import org.apache.http.client.fluent.*; public class QuickStart { public static void main(String[] args) throws Exception { Executor executor = Executor.newInstance() .auth("username", "password") .authPreemptive("172.16.17.86:9090"); // Line below does not compile String response = executor.execute(Request.Put("E:/path_to_shapefile/shapefiles/" "http://172.16.17.86:9090/geoserver/rest/workspaces/IDIRA6/datastores/scenario2373/external.shp?configure=all")) .returnResponse() .toString(); System.out.println(response); } }
上面的代码无法编译,因为我不知道如何在与 CURL 命令相同的请求中对两个 url 进行编码。对上述代码的修复或新方法将不胜感激。
提前致谢。
import org.apache.http.client.fluent.*;
import org.apache.http.entity.ContentType;
public class QuickStart {
public static void main(String[] args) throws Exception {
Executor executor = Executor.newInstance()
.auth("admin", "geoserver")
.authPreemptive("172.16.17.86:9090");
String response = executor.execute(Request.Put("http://172.16.17.86:9090/geoserver/rest/workspaces/IDIRA6/datastores/scenario2373/external.shp?configure=all")
.bodyString("E:\Tomcat\apache-tomcat-8.5.37\webapps\geoserver\data\data\IDIRA6\scenario2373\", ContentType.create("text/plain")))
.returnResponse()
.toString();
System.out.println(response);
}
}
感谢您的回答。我用 bodyString 替换了 bodyFile 并且成功了。
import org.apache.http.client.fluent.*;
import org.apache.http.entity.ContentType;
public class QuickStart {
public static void main(String[] args) throws Exception {
Executor executor = Executor.newInstance()
.auth("admin", "geoserver")
.authPreemptive("172.16.17.86:9090");
String response = executor.execute(Request.Put("http://172.16.17.86:9090/geoserver/rest/workspaces/IDIRA6/datastores/scenario2373/external.shp?configure=all")
.bodyString("E:\Tomcat\apache-tomcat-8.5.37\webapps\geoserver\data\data\IDIRA6\scenario2373\", ContentType.create("text/plain")))
.returnResponse()
.toString();
System.out.println(response);
}
}