نمایش نتایج 1 تا 5 از 5

نام تاپیک: مشکل POST داده فارسی در وب سرویسی که با Jersey پیاده شده.

  1. #1
    کاربر دائمی آواتار MSHService
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اکنون توی EJB
    پست
    207

    مشکل POST داده فارسی در وب سرویسی که با Jersey پیاده شده.

    با درود و ادب

    دوستان من در حال نوشتن یه برنامه با جرسی و هایبرنیتم که داده ها را بگیره و با دیتابیس کارهایی روشون انجام بده و پاسخ رو برگردونه.

    خب حالا مشکل من اینجاست وقتی من داده های را در کروم با add on اون که POSTMAN هست ، ارسال می کنم سرور نمیتونه داده فارسی رو بفهمه!

    ممنون میشم بتونید راهنماییم کنید.

    با سپاس

    این متد تستم در Junit

        @Test    public void testSearchObject(){

    BranchLocationSearchClient client = new BranchLocationSearchClient();

    List<String> searchValues = new ArrayList<String>();

    searchValues.add("سازمان جهاد");

    BranchLocationSearch search = new BranchLocationSearch();

    search.setBranchNames(searchValues);

    search.setBranchCodeFrom(2016);
    search.setBranchCodeTo(2077);

    search.setSearchType(EnumBranchLocationSearchType. SEARCH_BY_BRANCH_CODE);


    List<BranchLocation> branchLocations = client.searchByObject(search);

    System.err.println("testSearchObject->branchLocations: "+branchLocations);

    }


    اینم متد کلاینتم :
    	public List<BranchLocation> searchByObject(BranchLocationSearch search) {		URI uri = UriBuilder.fromUri(link)
    .path("search/locations")
    .build();
    WebTarget target = client.target(uri);
    Response response = target.request(MediaType.APPLICATION_JSON)
    .post(Entity.entity(search, MediaType.APPLICATION_JSON));

    if(response.getStatus()!=200){
    throw new RuntimeException(response.getStatus()+getClass().g etName()+": There is an error on server!");
    }
    return response.readEntity(new GenericType<List<BranchLocation>>(){});

    }


    اینم متد Resourceم

            @POST
    @Consumes(MediaType.APPLICATION_JSON)//";charset=utf-8"
    @Produces({MediaType.APPLICATION_JSON,MediaType.AP PLICATION_XML})
    public Response searchFroBranch(BranchLocationSearch search) throws Exception{
    //http://localhost:8080/exercise-services/webapi/search/locations/
    System.err.println(getClass().getSimpleName()+"->"+"searchFroBranch: "+search);

    List<BranchLocation> branchLocationes = branchLocationDAO.findByConstraints(search);

    if(branchLocationes==null || branchLocationes.size()<1){
    return Response.status(Status.NOT_FOUND).entity("!ERROR NOT FOUND IN DB").build();
    }
    return Response.ok().entity(new GenericEntity<List<BranchLocation>>(branchLocation es){} ).build();

    }



  2. #2

    نقل قول: مشکل POST داده فارسی در وب سرویسی که با Jersey پیاده شده.

    تا جایی که من میبینم این کد ۱۰۰ درصد درسته یکبار با Poster که addon firefox هم تست کن اگر مشکل داست تنظیمات دیتا بیس مورد داره از mysql استفاده می کنی ؟

  3. #3
    کاربر دائمی آواتار ahmad.mo74
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    تهران
    پست
    437

    نقل قول: مشکل POST داده فارسی در وب سرویسی که با Jersey پیاده شده.

    سلام

    راه های زیادی هست.
    یکیش اینه :


    @Produces("application/json;charset=UTF-8")


    اون جاییم که درخواست رو میفرستی
    ;charset=UTF-8
    رو به آخرش اضافه کن.

    اگر بازم نشد، توی header های درخواست هم Content-Type رو روی
    "application/json;charset=UTF-8"
    بزار.

    اگه بازم نشد :)) میشه اطلاعات رو موقع فرستادن درخواست encode کنی و سمت سرور دوباره decode اش کنی. از کلاسای Base64 یا URLEncoder و URLDecoder میتونی استفاده کنی (همشون تو خود jdk هست)
    خود json رو به هیچ وجه encode نکن، فقط اطلاعاتش رو. یعنی مثلا :


    searchValues.add(URLEncoder.encode("سازمان جهاد", "UTF-8"));


    و سمت سرور هم موقعی که داری اطلاعات رو از BranchLocationSearch میخونی به این صورت decode کنی :


    URLDecoder.decode(string, "UTF-8");


    در کل JAX-RS اخیرا بای دیفالت خودش utf-8 تولید میکنه، اگر از آخرین ورژن jersey هم استفاده کنی بد نیست.

    و اینکه این تستت احتمالا مشکل داره، باید انکدینگ ide ات رو هم بزاری رو utf-8 تا اونجایی که فارسی نوشتی رو درست encode کنه.

  4. #4
    کاربر دائمی آواتار MSHService
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اکنون توی EJB
    پست
    207

    نقل قول: مشکل POST داده فارسی در وب سرویسی که با Jersey پیاده شده.

    متشکرم از پاسختون
    ولی من همه کارها رو کردم اما نشد!!

    سرورم :


    @POST	@Path("create")
    @Consumes(MediaType.APPLICATION_JSON)
    // @Produces({ MediaType.APPLICATION_JSON+";charset=utf-8", MediaType.APPLICATION_XML +";charset=utf-8"})
    @Produces({ MediaType.APPLICATION_JSON+";charset=utf-8"})
    public Response createBranchLocation(BranchLocation branchLocation)
    throws Exception {
    System.err.println("********POST createBranchLocation: " + branchLocation);
    BranchLocation bl = branchLocationDao.createBranchLocation(branchLocat ion);
    if (bl == null) {//
    return Response
    .status(Response.Status.CONFLICT)
    .entity("ERROR! THIS BRANCH (with Code: "
    + branchLocation.getBranchMgCode()
    + ", BranchName: "
    + branchLocation.getBranchName()
    + ") IS EXIST!").build();
    }


    return Response.ok().entity(bl).build();
    }

    کلایمتم که موبایل هست
    final String link = "http://" + serverIp				+ ":8080/exercise-services/webapi/locations/create";
    BranchLocation bl = new BranchLocation();
    try {
    bl.setBranchName(URLDecoder.decode("مهدی تست", "UTF-8"));
    } catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
    }
    bl.setBranchMgCode(3600);

    Gson gson = new Gson();
    String jsonString = gson.toJson(bl);
    try {
    HttpClient httpClient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(link);
    httppost.setEntity(new StringEntity(jsonString));
    httppost.setHeader("Accept", "application/json; ;charset=utf-8");
    httppost.setHeader("Content-type", "application/json ;charset=utf-8");
    HttpResponse response = httpClient.execute(httppost);
    System.err.println("response: "+response.toString());
    HttpEntity entity = response.getEntity();

    String text = getASCIIContentFromEntity(entity);
    System.err.println("Post-> response: " + text);
    } catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

    }


    یه نکته دیگه با Poster که addon فایرفاکسه به درستی کار میکنه ! اما نمیدونم دیگه چرا نمیتونم!

  5. #5
    کاربر دائمی آواتار ahmad.mo74
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    تهران
    پست
    437

    نقل قول: مشکل POST داده فارسی در وب سرویسی که با Jersey پیاده شده.

    خب پس راهش همون encode/decode ه

    در ضمن تو خط 4 به جای decode باید encode بشه و بعد توی سرور decode بشه. یعنی :

    سمت کلاینت :

    BranchLocation branchLocation = new BranchLocation();
    branchLocation.setBranchName(URLEncoder.encode("م هدی تست", "UTF-8"));


    و سمت سرور :


    @POST
    @Path("/create")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
    public Response createBranchLocation(BranchLocation branchLocation) throws Exception {
    //...
    String branchName = URLDecoder.decode(branchLocation.getBranchName(), "UTF-8");
    //...
    }


    این روش قطعا باید درست کار کنه.

تاپیک های مشابه

  1. مشکل ذخیره داده فارسی mysql
    نوشته شده توسط alirezahf در بخش ASP.NET Web Forms
    پاسخ: 11
    آخرین پست: یک شنبه 12 آبان 1398, 19:37 عصر
  2. سوال: مشکل درارسال داده فارسی در هاست های شرکت آذرسان
    نوشته شده توسط laughing در بخش Java EE : نگارش سازمانی جاوا
    پاسخ: 2
    آخرین پست: چهارشنبه 11 خرداد 1390, 03:09 صبح
  3. مشکل post url فارسی
    نوشته شده توسط Peresident_y در بخش توسعه نرم افزار تحت وب
    پاسخ: 7
    آخرین پست: پنج شنبه 15 اردیبهشت 1390, 18:49 عصر
  4. سوال: Ajax در php مشکل ارسال داده فارسی در IE
    نوشته شده توسط billgivz در بخش PHP
    پاسخ: 1
    آخرین پست: چهارشنبه 30 بهمن 1387, 18:06 عصر
  5. سوال: مشکل ذخیره داده فارسی در اس کیو ال 2005
    نوشته شده توسط etedali در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: یک شنبه 22 اردیبهشت 1387, 13:24 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •