2

我在 GAE (Java) 宽度 libjsonrpc 和客户端 (C#) 宽度 lib jayrock 上有 JSON-RPC 服务器。当我调用服务器时,我有这个 JSONExeption:

服务器正在我的站点上运行

[WARN] A JSONObject text must begin with '{' at 1 [character 2 line 1]
   org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:432)
    at org.json.JSONObject.<init>(JSONObject.java:184)
    at org.json.JSONObject.<init>(JSONObject.java:310)
    at lib.jsonrpc.BasicRPCService.parseJSON(BasicRPCService.java:295)
    at lib.jsonrpc.BasicRPCService.dispatch(BasicRPCService.java:137)
    at ecosoft.jsonrpc.RPCServlet.doPost(RPCServlet.java:69)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at     org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at    org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
     at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
     at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

我的错误在哪里?

这是我的 src(客户端):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Jayrock.JsonRpc;
using System.Collections;
using Jayrock.Json;
using System.Net;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();

    }

    private void button1_Click(object sender, EventArgs e)
    {
        JsonRpcClient1 client = new JsonRpcClient1();


        client.RequestEncoding = Encoding.UTF8;

        client.Url = "http://localhost:8888/jsonrpc";
        MessageBox.Show(client.Invoke("test").ToString());

    }
}
class JsonRpcClient1 : Jayrock.JsonRpc.JsonRpcClient
{
    protected override WebRequest GetWebRequest(Uri uri)
    {
        var request = (HttpWebRequest)base.GetWebRequest(uri);
        request.ServicePoint.Expect100Continue = false;
        request.ContentType = "text/json";
        return request;
    }
}

}

服务器端:

public class CalcService extends BasicRPCService {

public PGPPdata calc() {
    PGPPdata data = new PGPPdata();
    data.setD1(2.0d);
    data.setD2(3.0d);
    data.setD(2.0d + 3.0d);
    return data;
}
public String test() {
    return "Ok";
}

}
4

0 回答 0