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

GemFire的Http响应无效?

步兴为
2023-03-14

在此处输入图像说明public class GemfireTest extends SecurityManager{

            public static void main(String[] args) throws NameResolutionException, TypeMismatchException, QueryInvocationTargetException, FunctionDomainException, IOException {

                System.setProperty("gemfire.locators", "localhost[8091]");
                Properties properties = new Properties();

             ServerLauncher serverLauncher = new ServerLauncher.Builder()

                        .setMemberName("server1")
                        .setServerPort(40404)
                        .set("start-locator", "localhost[8091]")
            .build();
                serverLauncher.start();
                System.out.println(serverLauncher.status());
String restapi ="http://localhost:8091/gemfire-api/v1/";
             //   URLConnection urlConnection = new URL(restapi).openConnection();
                try {
                    URL obj = new URL(restapi);
                    HttpURLConnection con = (HttpURLConnection) obj.openConnection();
                    con.setRequestMethod("GET");
                    con.setRequestProperty("accept","application/json");
                    int responseCode = con.getResponseCode();
                    System.out.println(responseCode);
                   // if (responseCode == HttpURLConnection.HTTP_OK) { // success
                        BufferedReader in = new BufferedReader(new InputStreamReader(
                                con.getInputStream()));
                        String inputLine;
                        StringBuffer response = new StringBuffer();

                        while ((inputLine = in.readLine()) != null) {
                            response.append(inputLine);
                        }
                        in.close();

                        // print result
                        System.out.println("reason"+response.toString());

C:\users\xxx\ideaprojects\gemfire on Desktop-MRCV2EH[40404]中的服务器,因为server1当前联机。进程ID:2640正常运行时间:7秒Geode版本:9.5.1 Java版本:1.8.0_171日志文件:C:\users\xxx\ideaProjects\gemfire\server1.Log JVM参数:-dgemfire.enable-cluster-configuration=true-dgemfire.load-cluster-configuration-from-dir=false-dgemfire.jmx-manager-bind-address=localhost-djava.rmi.server.hostname=localhost

正在获取响应代码:-1,无效的Http响应。

我该如何解决这个问题?

共有1个答案

狄玉书
2023-03-14

我已经在本地测试了您的源代码(加上一个/两个小修改),看起来一切都运行得很好:

public static void main(String[] args) throws IOException {
    Integer httpServicePort = 8080;
    ServerLauncher serverLauncher = 
        new ServerLauncher.Builder()
        .set("log-file", "")
        .set("http-service-port", httpServicePort.toString())   
        .set("start-dev-rest-api", "true")
        .set("http-service-bind-address", "localhost")
        .setPdxReadSerialized(true)
        .build();

    serverLauncher.start();
    System.out.println("REST server successfully started, press any key to stop it...");
    String restapi ="http://localhost:" + httpServicePort + "/gemfire-api/v1/";

    try {
        URL obj = new URL(restapi);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("GET");
        con.setRequestProperty("accept","application/json");
        int responseCode = con.getResponseCode();
        System.out.println("Response Code: " + responseCode);

         if (responseCode == HttpURLConnection.HTTP_OK) { // success
               BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
               String inputLine;
               StringBuffer response = new StringBuffer();
               while ((inputLine = in.readLine()) != null) {
                   response.append(inputLine);
               }

               in.close();
               System.out.println("Response: " + response.toString());
         }
    } catch (Exception exception) {
        exception.printStackTrace();
    }

    System.in.read();
    serverLauncher.stop();
    System.exit(0);
}

运行上述程序将打印以下内容:

REST server successfully started, press any key to stop it...
Response Code: 200
Response: {  "regions" : [ ]}

是否正确设置了geode_home环境变量?执行curl命令时使用的port是什么?是否与您通过http-service-port属性配置的数字相同?。干杯。

 类似资料:
  • 主要内容:HTTP响应完整格式HTTP响应完整格式 HTTP的响应也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应示例: ①报文协议及版本; ②状态码及状态描述; ③响应报文头,也是由多个属性组成; ④响应报文体,即我们真正要的“干货”。

  • 基本响应 当然,所有的路由及控制器必须返回某个类型的响应,并发送回用户的浏览器。Laravel 提供了几种不同的方法来返回响应。最基本的响应就是从路由或控制器简单的返回一个字符串: $router->get('/', function () { return 'Hello World'; }); 指定的字符串会被框架自动转换成 HTTP 响应。 响应对象 但是,对于大多数路由和控制器行为

  • Blade 中操作响应的对象是 Response 发送文本 Response#text 用于发送一个状态码为 200 的文本响应 public void responseText(Response response){ response.text("Hello World"); } 发送HTML Response#html 用于发送一个状态码为 200 的HTML响应 public voi

  • 我正在尝试上传一个xml文件。当使用MultipartEntityBuilder将二进制格式的文件添加到HttpEntity时,我收到以下错误 我已经通过了链接 https://www.baeldung.com/httpclient-multipart-upload 我的理解是,该文件不被接受,因为http实体无法发送MultipartEntityBuilder,但我可能错了。

  • 我正在使用WSO2发送Rest请求,这是我能够做到的。但是在我向客户发送响应之前,我希望有一些逻辑。后端Rest服务返回“成功”作为响应字符串。我有一个Java的代码用来做这件事,我想在WSO2中使用相同的逻辑。逻辑很简单1.如果HTTP状态大于eq到200并且小于300并且共振Str.equalsIgnoreCase(成功)然后返回RetCode=C; Message=成功ELSE返回RetCo

  • Pivotal GemFire 是内存中的分布式数据库,提供: 性能扩展 通过全局的分布式应用进行一致的数据库操作 高可用性和高伸缩性,全局规模 强大的开发者特性 简单的分布式节点管理 作为世界规模最大的实时交易系统之一12306就是使用的#GemFire#